3

假设我有一个名为 I 的结构,其大小为 n*1,具有多个字段,例如,其中一个字段称为“区域”。当我尝试下面的代码时:

area = I.area

结果区域只有一个来自结构最后位置的值。是否有任何快速的方法来精确字段中的所有值,除了使用 for 循环如下:

for ii = 1:n; area(ii) = I(ii).area; end
4

2 回答 2

1
area = [I.area]

I.areaI(1).area以逗号分隔列表的形式返回, ... 的所有值I(2).area,该列表可以插入到任何需要此类列表的位置,例如函数参数列表或数组初始化。

编辑:如果 allI(i).area是大小相等的行向量。然后你可以先水平连接它们,然后重塑到所需的尺寸:

area =  reshape([I.area], [2 length(I)])'

结果:

>> I.area

ans =

     3     4


ans =

     5     6


ans =

     7     8

>> reshape([I.area], [2 length(I)])'

ans =

     3     4
     5     6
     7     8
于 2016-09-24T04:36:19.957 回答
1

在结构周围使用 simple[]将导致所有值的水平串联。如果您想将它们沿另一个维度连接,则可以使用cat明确指定。这将使您能够更好地处理可能包含多个值的字段。

% Concatenate them along the first dimension
out = cat(1, I.area);

% Concatenate them along the third dimension
out = cat(2, I.area);

或者,如果字段都是不同的维度,则将它们转换为cell

out = {I.area};
于 2016-09-24T14:21:10.740 回答