matlab提取矩阵列向量

问题遇到的现象和发生背景

我想提取一个M乘M型(M较大)矩阵的每一列,提出来为

img


,然后将矩阵重写为

img


,我先将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,我想输出为

img

我想要达到的结果

我想输出为,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
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632