存储从结构到矩阵的向量而没有for循环?

时间:2014-05-15 06:37:19

标签: matlab

我的问题很简单。我在结构中有相同大小的向量(我们称之为a.f)。假设我们有8个结构(8< 1x1结构>),每个结构包含另一个结构b,其中有一个向量。我知道我可以这样做:

for i = 1:8
    matrix(i,:) = a(i).f(1:5)
end

for i = 1:8
    matrix{i} = a(i).f(1:5)
end

还有另一种方法可以将所有这些数组存储到矩阵中,而不需要for循环吗?

matrix = [a.f];

将它们全部存储为矢量。

3 个答案:

答案 0 :(得分:2)

reshape之后使用[a.f]怎么样?例如:

 matrix =reshape([a.f],numel(a),[]);

答案 1 :(得分:2)

如果您的向量是行,则使用vertcat;如果是列,则使用horzcat

示例:

>> a(1).f = 1:7;
>> a(2).f = 11:17;
>> matrix = vertcat(a.f)
matrix =
     1     2     3     4     5     6     7
    11    12    13    14    15    16    17

答案 2 :(得分:0)

怎么样

matrix = zeros(numel(a),numel(a(1).f)); 
matrix(:) = [a.f];