我希望能有一個多維的結構數組,但我似乎無法得到所包含元素的字段。或在代碼:Matlab:獲取單元內部結構的字段,2D結構陣列
mySample = struct('a', zeros(numA),'b', zeros(numB));
Data = cells(height,width);
disp(Data(1,1).a);
底線失敗,並作爲
這樣的錯誤「不正確的索引矩陣參考」。
在Matlab中完成的二維數組結構如何?
我希望能有一個多維的結構數組,但我似乎無法得到所包含元素的字段。或在代碼:Matlab:獲取單元內部結構的字段,2D結構陣列
mySample = struct('a', zeros(numA),'b', zeros(numB));
Data = cells(height,width);
disp(Data(1,1).a);
底線失敗,並作爲
這樣的錯誤「不正確的索引矩陣參考」。
在Matlab中完成的二維數組結構如何?
有幾個的方法來創建結構的陣列(「結構陣列」或「結構陣列」)。請注意,在結構數組中,每個元素必須具有相同的字段。例如,如果s(1)具有字段「a」和「b」,則s(2)... s(n)必須具有字段「a」和「b」。
% num rows
n = 10;
% num cols
m = 50;
% method 1, which will repeat a structure
s = struct('field1', 10, 'field2', 20);
sArray = repmat(s, n, m);
% method 2, which initializes each field to empty []
sArray(n,m) = struct('field1', [], 'field2', []);
可以就此展開超越第二維eaisly:
sArray(n,m,p) = struct('field1', [], 'field2', []);
你也可以預分配數組,並使用一個for循環來設置每個字段的值。此外:
help deal
help structfun
您還可以創建結構的單元陣列,其提供更多的靈活性:在單元陣列中的每個結構可具有不同的字段。
c = cell(1,2);
c{1} = struct('a', 1, 'b', 2);
c{2} = struct('z', 0, 'q', 5);
結構的2D陣列可以以2種方式來實現:結構的
細胞陣列 - 異種容器。這意味着每個結構可以不同。
x = {struct('a',1,'b',2), struct('c',3) ; struct() ; struct('aa',[5 6])};
disp(x{1,2});
結構陣列 - 歸屬容器。這意味着所有結構必須是相同的 - 類型安全。
x = struct('a',{1 2 3 ; 1 2 3},'b', {4 5 6; 7 8 9 });
disp(x(1,2));