问题遇到的现象和发生背景
我想提取一个M乘M型(M较大)矩阵的每一列,提出来为

,然后将矩阵重写为

,我先将M取一个较小的值如3,尝试了一下
问题相关代码,请勿粘贴截图
A=[1,2,3;4,5,6;7,8,9];
for i=1:3
x(i)=A(:,i)
end
运行结果及报错内容
无法执行赋值,因为左侧和右侧的元素数目不同。
我的解答思路和尝试过的方法
如果将x(i)改成x就对,但是这样输出全是x,我想输出为

我想要达到的结果
我想输出为,x可以有角标,来区分是哪一列
我想提取一个M乘M型(M较大)矩阵的每一列,提出来为


A=[1,2,3;4,5,6;7,8,9];
for i=1:3
x(i)=A(:,i)
end
无法执行赋值,因为左侧和右侧的元素数目不同。
如果将x(i)改成x就对,但是这样输出全是x,我想输出为

我想输出为,x可以有角标,来区分是哪一列
关注方法有很多,例如:
方法一借助eval:
A=[1,2,3;4,5,6;7,8,9];
for i=1:3
eval(['x',num2str(i),'=A(:,',num2str(i),')'])
end
输出结果:
x1 =
1
4
7
x2 =
2
5
8
x3 =
3
6
9
方法二借助结构体
A=[1,2,3;4,5,6;7,8,9];
for i=1:3
x.(['v',num2str(i)])=A(:,i);
end
disp(x.v1)
方法三借助元胞数组
A=[1,2,3;4,5,6;7,8,9];
for i=1:3
x(i)={A(:,i)};
end
disp(x)
disp(x{1})
[3×1 double] [3×1 double] [3×1 double]
1
4
7