matlab 如何使用for循环删除矩阵第i列

vs91vp4v  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(271)

使用MatLab,我试图从一个矩阵开始,
第1列|第2列|第3列|第4列|第5列
-|
1|4|7|10|11
2|5|8|11|12
3|6|9|12|13
并使用for循环来获得5个矩阵,其中每一列都被移除,根据:
Column2|Column3|Column4|Column5
-|-|
4|7|10|11
5|8|11|12
6|9|12|13
Column1|Column3|Column4|Column5
-|-|
1|7|10|11
2|8|11|12
3|9|12|13
Column1|Column2|Column4|Column5
-|-|
1|4|10|11
2|5|11|12
3|6|12|13
Column1|Column2|Column3|Column5
-|-|
1|4|7|11
2|5|8|12
3|6|9|13
Column1|Column2|Column3|Column4
-|-|
1|4|7|10
2|5|8|11
3|6|9|12
请注意,这是非常重要的,这是在一个循环中完成的,以便可复制到任意数量的列,因为我已经设法为已知数量的列编写了这一代码。
事先感谢您的帮助。

k5ifujac

k5ifujac1#

对于MatLab或Octave来说,这是一个非常简单的问题。我想知道你有什么问题?

m = [
  1 4 7 10 11
  2 5 8 11 12
  3 6 9 12 13
];

outmatrices = {};

for col = 1:size(m,2)
  outmatrices{end+1} = [m(:,1:col-1), m(:,col+1:end)];
end

outmatrices
xmjla07d

xmjla07d2#

为此,您可以使用arrayun(),它将处理任何矩阵大小并将循环隐藏在函数调用之后。例如,

result = arrayfun(@(k)[m(:,1:k-1),m(:,k+1:end)],1:size(m,2),'uni',false);

结果将是以各种矩阵作为单元元素的单元阵列。

相关问题