2020-11-09
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
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]