Matlab中經常會用到括號去引用某Array或者是cell的內容,但三者有什么具體區別呢?
中括號的另一個作用是在函數中,分配輸出參數。
( )
小括號,用於 引用數組的元素。
如 X(3)就是X的第三個元素。
算例:
A = [ 1 2 3 ]
%A就是一個三個元素的數值數組。中括號用於構建非cell數組。
%數組的引用用小括號
A(1,2)
%A(1,2)得到A數組第一行第二列的元素。
B = {A A}
%B為1一行兩列的數組,數組的元素為cell
% 數組的引用依然用小括號
B(1)
%這時B(1)為一個cell
%cell內容的引用需要用大括號。
%B{1}則為cell 1的內容,此時為 1 2 3
%cell內容為數值數組的,繼續用小括號引用其內容
B{1}(1,3)
%B{1}(1,3)的內容為3.
D={B B}
D =
{1x2 cell} {1x2 cell}
此時D的某個元素內容的引用則為
D{1}{1,2}(1)
%cell層都需要用大括號引用。
[ ]
中括號用來構建向量(Vectors)或者是矩陣(Matrices)。如
[6.9 9.64 sqrt(-1)] 就是一個有三個元素的向量。
[11 12 13; 21 22 23]
是一個二乘三的矩陣
中括號的另一個作用是在函數中,分配輸出參數。
{ }
大括號,用於cell型的數組的分配或引用。
比如
A(2,1) = {[1 2 3; 4 5 6]}
, or
A{2,2} = ('str')
( )
小括號,用於 引用數組的元素。
如 X(3)就是X的第三個元素。
X([1 2 3])就是X的頭三個元素。
算例:
A = [ 1 2 3 ]
%A就是一個三個元素的數值數組。中括號用於構建非cell數組。
%數組的引用用小括號
A(1,2)
%A(1,2)得到A數組第一行第二列的元素。
B = {A A}
%B為1一行兩列的數組,數組的元素為cell
% 數組的引用依然用小括號
B(1)
%這時B(1)為一個cell
%cell內容的引用需要用大括號。
%B{1}則為cell 1的內容,此時為 1 2 3
%cell內容為數值數組的,繼續用小括號引用其內容
B{1}(1,3)
%B{1}(1,3)的內容為3.
D={B B}
D =
{1x2 cell} {1x2 cell}
此時D的某個元素內容的引用則為
D{1}{1,2}(1)
%cell層都需要用大括號引用。
cell數組
是MATLAB的一種特殊矩陣,或者叫做廣義矩陣。矩陣的每個元素可以是任何一種數據類型的常數、常量或者矩陣,所以矩陣的每個的元素叫做cell。和一般的數值矩陣一樣,元胞數組的內存空間也是動態分配的。
通過小括號()里面加下標,訪問cell數組中的數據,返回的是對應的cell。
通過大括號{}里面加下標,訪問cell數組中的數據,返回的是對應cell的內容。看一下下面的例子就明白了!
a={20,'matlab',ones(2,3)}
a =
[ 20 ] 'matlab' [ 2x3 double ]
>> a(3) %查看cell數組a中的第三個cell
ans =
[ 2x3 double ]
>> class(a(3)) %查看cell數組a中第三個cell的類型
ans =
cell
>> a{3} %查看cell數組a中第三個cell的內容
ans =
1 1 1
1 1 1
>> class(a{3}) %查看cell數組a中第三個cell的內容的類型
ans =
double
>> a(3)= [] %刪除cell數組a中的第三個cell
a =
[ 20 ] 'matlab'
>> a{2}= [] %清空cell數組a中第二個cell的內容,並沒有刪除
a =
[ 20 ] []
a =
[ 20 ] 'matlab' [ 2x3 double ]
>> a(3) %查看cell數組a中的第三個cell
ans =
[ 2x3 double ]
>> class(a(3)) %查看cell數組a中第三個cell的類型
ans =
cell
>> a{3} %查看cell數組a中第三個cell的內容
ans =
1 1 1
1 1 1
>> class(a{3}) %查看cell數組a中第三個cell的內容的類型
ans =
double
>> a(3)= [] %刪除cell數組a中的第三個cell
a =
[ 20 ] 'matlab'
>> a{2}= [] %清空cell數組a中第二個cell的內容,並沒有刪除
a =
[ 20 ] []