元胞在引用時,{}和()到底有什麼區別?
注意:大括號用於表示元胞的內容,小括號表示指定的元胞物件。
舉例說明這句話的意思
r=}
r = 1×2 cell 陣列
>> r %輸出的是元胞內容
ans =
1>> r
ans =
1×2 cell 陣列 % 輸出的是元胞陣列,且每個元素都是元胞
>> r(1)
ans =
1×1 cell 陣列
>> s=r(1)
s = 1×1 cell 陣列 %仍舊是元胞物件 s是cell型別
>> m=r(1,2)
m = 1×1 cell 陣列 %元胞物件
>> n=r %元胞內容 n是double型別
n = 2
>> q=n*2
q = 4
>> o=s*2
未定義與 'cell' 型別的輸入引數相對應的運算子 '*'。
>>
當我們儲存函式控制代碼的時候,呼叫函式時仍舊是***呼叫的函式內容,而非物件***:
r=,}
r = 1×2 cell 陣列
k>> r(1)
ans =
1×1 cell 陣列 % 表示這個元胞物件
%有兩個要素
k>> r
ans =
1×2 cell 陣列 %第乙個元胞元素中的內容
k>> r(1)
ans =
1×1 cell 陣列 %第乙個元胞中第乙個元素物件
當函式呼叫時仍舊同理:
>> r=,}
r = 1×2 cell 陣列
>> r
ans =
包含以下值的 function_handle:
@objfun
>> r(1)
ans =
1×1 cell 陣列
但是如何函式有引數,怎麼辦呢?
r=struct('initfun', });
uu=r.initfun(1,2,3); %呼叫der ,並假設三個函式均有有三個引數
uu=r.initfun(1,2,3); %呼叫rr
% ②
r=struct('initfun', ); %錯誤寫法
%③r=struct('initfun', ,}); %錯誤寫法
後邊兩種寫法為什麼不對呢?
第二種寫法的意思時initfun對應著乙個元胞,但結構體中name和value是一一對應的,initfun對應了三個值,顯然是不合理的;但是r是1*3的結構體陣列,有三個值,每個值都是乙個inifun的屬性物件,選擇其中的任乙個與inifun對應就好了,因此可以寫成
r(1).initfun(1,2,3)
但這樣的寫法是不是很怪,相當於initfun屬性有三個物件,分別是r(1),r(2),r(3)
第三種寫法同第二種方法,相當於和是兩個initfun物件,若呼叫則需寫成
r(1).initfun %內容是@der
r=struct('initfun', });
r.initfun(1,2,3) % 呼叫
MATLAB元胞陣列
元胞陣列是matlab的一種特殊資料型別,可以將元胞陣列看做一種無所不包的通用矩陣,或者叫做廣義矩陣。組成元胞陣列的元素可以是任何一種資料型別的常數或者常量,每乙個元素也可以具有不同的尺寸和記憶體占用空間,每乙個元素的內容也可以完全不同,所以元胞陣列的元素叫做元胞 cell 和一般的數值矩陣一樣,元...
matlab胞元陣列
今天敲matlab 的時候,用bwboundaries函式來提取影象邊界的 中出現了d b這句 這句 的意思是將邊影象中第乙個物件的所有邊界座標提取出來 覺得這種表達形式很有意思,查了查資料是元胞陣列的利用。元胞陣列裡面可以是任意結構的陣列 任意大小,任意型別 是一種很方便的結構,這樣你就可以把亂七...
Matlab中的元胞陣列
元胞陣列 cell array 將型別不同的相關資料整合到乙個單一的變數中,使得大量相關資料的引用和處理變得簡單方便。也就是說cell元胞陣列,儲存不同型別的資料。建立方法有3種 直接賦值法 利用函式cell 利用直接建立元胞陣列的所有單元。通過賦值語句把值賦到元胞陣列的乙個單元中,但每一次賦值只能...