📄 tmatvar.m
字号:
% [ ]Ok *** TEST ***% of: Test of record variables in Matlab.% Sign: Datum:%% *****************************************************************************% RECVAR, A package for new data types in Matlab 4. % (c) FOA 1997. See the file rvright.m for copyright notice.%% A test program for the package for record type variables in Matlab.%% Start : 951129 Svante Bj鰎klund (svabj).% Latest change: $Date: 1997/08/20 13:22:14 $ $Author: svabj $.% $Revision: 2.6 $% *****************************************************************************disp('Test of record variables in Matlab.')disp('Don''t forget to compile mex-files before the test.')testnr=input('Choose testno: ');while (isempty(testnr)) testnr=input('Choose testno: ');endmore onif (testnr==1)% *****************************************************************************% [ ] mparam : Test 1% Sign: Datum:%% *****************************************************************************% Comments:clear A B% [ ]disp('Test 1a')A = setr([],'namn',4)size(A) B = getr(A,'namn')B = getr(A,'namn')% Expected result : % A = rubbish (with Matlab 4)% [13,1] (on SUN)% B = 4% B = 4% Real result :% [ ]disp('Test 1b')size(A)A = setr(A,'namn',5);size(A)A = setr(A,'namn',5);size(A)B = getr(A,'namn')% Expected result :% [13,1] (on SUN)% [13,1] (on SUN)% [13,1] (on SUN)% B = 5% % Real result :% [ ]disp('Test 1c')A = setr(A,'matris',[1 2 3; 4 5 6]);size(A)getr(A,'namn')getr(A,'matris')A = setr(A,'namn',6);size(A)getr(A,'namn')getr(A,'matris')A = setr(A,'matris',[7 8]');size(A)getr(A,'namn')getr(A,'matris')% Expected result :% [27,1] (on SUN)% 5% [1 2 3; 4 5 6]% [27,1] (on SUN)% 6% [1 2 3; 4 5 6]% [23,1] (on SUN)% 6% [7; 8]% Real result :% [ ]% Test of save and load with record variable.disp('Test 1e')A = setr([],'namn',9)';A = setr(A,'matris',[11 13]');save testfile Aclear Aload testfilegetr(A,'namn')getr(A,'matris')% Expected result :% 9% [11; 13]% Real result :% [ ]% Test of record matrices as function parameters and return values.disp('Test 1f')A = setr([],'matris',[14 15]');A = setr(A,'namn',16)';B = testfun1(A);getr(B,'namn')getr(B,'matris')% Expected result :% 16% [14; 15] % 16% [28; 29]% Real result :% [ ]disp('Test x')% Expected result : % Real result :elseif (testnr==2)% *****************************************************************************% [ ] : Test 2% Sign: Datum:%% *****************************************************************************% [ ]disp('Test 2')A = 3;A = setr(A,'namn',16)';% Expected result : Error message: Can not change a matrix, which is not a record variable..% Real result :elseif (testnr==3)% *****************************************************************************% [ ] : Test 3% Sign: Datum:%% *****************************************************************************% Comments% Testing stringfields, several fields !?!% [ ]disp('Test 3a')var = setr([],'datatype','AntDataT');var = setr(var,'type','equlin');var = setr(var,'noElem',12);var = setr(var,'lambda',0.03);var = setr(var,'distElem',0.45);getr(var,'datatype')getr(var,'type')getr(var,'noElem')getr(var,'lambda')getr(var,'distElem')% Expected result : % AntDataT% equlin% 12% 0.03% 0.45% Real result :elseif (testnr==4)% *****************************************************************************% [ ] : Test 4% Sign: Datum:%% *****************************************************************************% Comments% Testing showr.% [ ]disp('Test 4a')var = setr([],'datatype','AntDataT');var = setr(var,'type',['equlin';'abcdef']);var = setr(var,'noElem',12);var = setr(var,'lambda',0.03);var = setr(var,'distElem',0.45*[1+2*j, 5; 6+7*j, 8]);showr(var)% Expected result :% var:% datatype = AntDataT% type = ['equlin';'abcdef']% noElem = 12% lambda = 0.03% distElem = [0.45+0.9*j, 2.25 ; 2.7+3.15*j, 3.60]% Real result :elseif (testnr==5)% *****************************************************************************% [ ] : Test 5% Sign: Datum:%% *****************************************************************************% Comments% Testing recdir.% [ ]disp('Test 5a')var = setr([],'datatype','AntDataT');recdir(var)var = setr(var,'antenna',[3 5*i]);recdir(var)% Expected result :% datatype%% datatype% antenna% Real result :elseif (testnr==6)% *****************************************************************************% [ ] : Test 6% Sign: Datum:%% *****************************************************************************% Comments% Testing complex fields !?!% [ ]disp('Test 6a')clear varvar = setr([],'m1',[1+2*i, 3]);getr(var, 'm1')var = setr([],'m2',7);getr(var, 'm2')var = setr([],'m1',[4 5 6; 8 9 10]');getr(var, 'm1')var = setr([],'m2',[11 12]*i);getr(var, 'm2')% Expected result :% [1+2*i, 3]% 7% [4 5 6; 8 9 10]'% [11*i 12*i]% Real result :elseif (testnr==7)% *****************************************************************************% [ ] : Test 7% Sign: Datum:%% *****************************************************************************% Comments% Testing whosr.% [ ]disp('Test 7a')var = setr([],'datatype','AntDataT');var = setr(var,'type',['equlin';'abcdef']);var = setr(var,'noElem',12);var = setr(var,'lambda',0.03);var = setr(var,'distElem',0.45*[1+2*j, 5; 6+7*j, 8]);whoswhosr(var)% Expected result : % Real result :% Name Size Complex%% var 74 by 1 No%% Name Type Size Complex%% distElem 2 by 2 Yes% lambda 1 by 1 No% noElem 1 by 1 No% type 2 by 6 No% datatype 1 by 8 No%% Grand total is 26 elements using xxxx bytes elseif (testnr==9)% *****************************************************************************% [ ] : Test 9% Sign: Datum:%% *****************************************************************************% Comments% A test of record variables as fields in a record variable.% [ ]disp('Test 9a')A = setr([],'name','Tom');A = setr(A,'age','47');B = setr([],'name','Julia');B = setr(B,'age','43');C = setr([],'person1',A);C = setr(C,'person2',B);showr(C)D = getr(C,'person1');E = getr(C,'person2');showr(D)showr(E)% Expected result :% recvar:% person2 = rubbish (with Matlab 4)% person1 = rubbish (with Matlab 4)% recvar:% age = % 47%% name = % Tom%% recvar:% age = % 43% % name = % Julia% Real result :elseif (testnr==10)% *****************************************************************************% [ ] : Test 10% Sign: Datum:%% *****************************************************************************% Comments% Testing the correction of an error.% [ ]disp('Test 10a')b = setr([],'f1',1);b = setr(b,'f2',2);b = setr(b,'f2',[3 4]);% Expected result :% The following messages should not appear:% MATLAB segmentation violation detected !!!% Bus error% Real result :elseif (testnr==11)% *****************************************************************************% [ ] : Test 11% Sign: Datum:%% *****************************************************************************% Comments% Testing the correction of an error.% [ ]disp('Test 10a')a = 1;b = setr([],'f1',1);isrecvar(a)isrecvar(b)isrecvar([])% Expected result :% 0% 1% 0% Real result :elseif (testnr==12)% *****************************************************************************% [ ] : Test 12% Sign: Datum:%% *****************************************************************************% Comments% Trying to access a nonexistent field.% Also test of changed function "existr".% [ ]disp('Test 12a')C = setr([],'name',4);existr(C,'name')existr(C,'age')% Expected result :% 1% 0% Real result :% [ ]disp('Test 12b')C = setr([],'name',4);getr(C,'notexisting')% Expected result : ??? The field not found.% or Reference to non-existent field 'notexisting'.% Real result :else disp('Incorrect testnumber.');end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -