我希望能有一个多维的结构数组,但我似乎无法得到所包含元素的字段。或在代码: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));