在循环中创建'n'矩阵

时间:2011-05-24 09:00:55

标签: matlab

  

可能重复:
  How to concatenate a number to a variable name in MATLAB?

大家好,作为标题,我想知道是否有人知道在Matlab中如何在循环中创建'n'矩阵。

像这样:

for (i=1:n)

p_i = P(i, :);
q_i = Q(i, :);

A_i = [p_i, p_i', q_i];
end
当然,Matlab会在矩阵A_i上重写n次,但我希望有n个矩阵的'i'索引。

提前谢谢你,祝你有个美好的一天!

1 个答案:

答案 0 :(得分:5)

您可以将所有内容连接到3D数组中:

A_i = zeros(D1,D2,n);  % D1 and D2 are the dimensions of the 2D arrays
for i = 1:n
    p_i = P(i,:);
    q_i = Q(i,:);
    A_i(:,:,i) = [p_i, p_i', q_i];
end

如果你真的想要n个不同的矩阵,那么你需要一个cell array。您的代码将变为:

A_i = cell(1,n);
for i = 1:n
    p_i = P(i,:);
    q_i = Q(i,:);
    A_i{i} = [p_i, p_i', q_i];
end

请注意,您应该仔细考虑哪种最适合您的需求。单元阵列唯一真正的优点是它允许每个元素是不同的数据类型或不同大小的数组。与2D阵列的单元阵列相比,3D阵列有几个优点(您可以对其进行求和,重新整形,从其中切出3D子块等)。