在循环中创建'n'矩阵

Zan*_*any 1 matlab

可能重复:
如何在MATLAB中将数字连接到变量名?

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

像这样:

for (i=1:n)

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

A_i = [p_i, p_i', q_i];
end
Run Code Online (Sandbox Code Playgroud)

当然,Matlab在矩阵A_i上重写了n次,但是我希望有n个矩阵的'i'索引.

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

Oli*_*rth 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
Run Code Online (Sandbox Code Playgroud)

如果你真的想要n不同的矩阵,那么你将需要一个单元阵列.你的代码会变成这样的:

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
Run Code Online (Sandbox Code Playgroud)

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