2020-11-09

qq_48610969發表於2020-11-12

MATLAB變數(變數)筆記

char型別

在MATLAB中,可以使用char函式建立一個字元矩陣,如:
mych=char(‘a’,‘abc’,‘12345’,‘cd’);
該命令會建立一個二維的字元矩陣,矩陣行數為4行(即輸入的引數個數),矩陣列數為5列(輸入各引數字串長度的最大值)。輸入size(mych),其返回值為
ans =
4 5
這說明mych為一個4*5的矩陣。
對於mych中的元素,其字串長度小於5的,自動在右邊補齊空格,直到其長度為5。
如對於mych中的第一行元素,輸入命令length(mych(1,:))
返回值為5,該行元素為:“a ”,注意,這裡a後面包含了4個空格。
如果想把元素中的空格去掉,可以使用strtrim()函式,如:
strtrim(mych(1,:)),返回值為:“a”,此時將不再包含空格。

string型別

表示的是多個字元,是由char型別多個單字元組合而成,例如:

S1='Example';
S2='String';

String concatenation:
S3=[S1 S2] =>ExamoleString
S4=[S1;S2] =>error(發生錯誤,因為兩個位元組不想等,不能拼接)

  • Many numerical and logical operators can be applied to strings
str='aardvark';
'a'==str
ans=
    1 1 0 0 0 1 0 0

then:

str(str=='a')='Z'

結果先是str(11000100)=‘Z’
最後顯示結果為ZZrdvZrk

structure型別

結構體通過欄位(fields)來對元素進行索引,在訪問時只需通過點號來訪問資料變數,結構體可以通過兩種方法進行建立,即通過直接賦值方式建立或通過struct函式來建立。

/*建立*/
%直接賦值方法建立結構體
circle.radius=3.0;
circle.center[0 0];
circle.color='red';
circle.linestyle='--'
circle=            
       radius:3            
       center:[0 0];            
       color:'red'            
       linestyle:'--'
%用struct函式建立
data1={3.0,5.0,'sqrt(7)'};
data2={[0 0][1 1][3 5]};
data3={'--''...''-.-'};
data4={'red''blue''yellow'};
data5={'yes''no''no'};
circle=struct('radius',data1,'center',data2,'linestyle',data3,'color',data4,'filled',data5)
circle=
      1x3 struct array with fields:               
      radius            
      center           
      linestyle           
      color            
      filled

functions
nesting

cell array

單元陣列中的每一個元素稱為單元(cell),單元中可以包含任何型別的Matlab資料,即可以是陣列,字元,符號物件,單元陣列或結構體等。理論上,單元陣列可以建立任意數的單元陣列,大多數情況下,為簡單起見,建立簡單的單元陣列(如一維單元陣列)。單元陣列的建立方法可以分為兩種,通過賦值語句直接建立;或通過cell函式首先為單元陣列分配記憶體空間,然後再對每個單元賦值。

A(1,1)={[1 4 3;0 5 8;7 2 9]};
A(1,2)={'Anne Smith'};
A(2,1)={3+7i};
A(2,2)={-pi:pi:pi};
A
A=
   [3×3 double]        'Anne Smith'
   [3.0000+7.0000i]    [1×3 double]

找尋cell中的一個組元
A(1,1)=[3×3 double]
A{1,1}=[1 4 3;0 5 8;7 2 9]
找尋組元的內容
A{1,1}(1,1)=1

cat()函式

array concatenation
A=[1 2;3 4];B=[5 6;7 8];
C=cat(1,A,B)
C=cat(2,A,B)
C=cat(3,A,B)
其中的1,2, 3分別表示xyz中的y,x,z

reshape()函式

A=[1:3;4:6]
C=reshape(A,3,2)
C=
[1 5;4 3;2 6]