在单行中从多个数组创建结构

时间:2013-05-27 07:24:43

标签: arrays matlab struct vectorization

假设我有两个相同大小的数组:

X = [1 2 3 4 ...]
Y = [1 2 3 4 ...]

但我想要的是一个结构:

S(1) =          S(2) = 
    X: 1            X: 2
    Y: 1            Y: 2

解决这个问题的显而易见的方法是:

for ii = 1:length(X)
    S(ii).X = X(ii);
    S(ii).Y = Y(ii);
end

你甚至可以使用arrayfun将其压缩到一行,但我正在寻找一个更简单的单行。我希望有一些与此相似的东西:

X = [S.X];

解决了同样的问题,但方向相反。

有可能吗?

1 个答案:

答案 0 :(得分:6)

使用struct和单元格

S = struct('X', num2cell(X), 'Y', num2cell(Y) );