如何在MatLab中用for循环删除矩阵第i列并生成对应矩阵
用For循环生成移除每一列的Matlab矩阵
原矩阵
| column1 | column2 | column3 | column4 | column5 |
|---|---|---|---|---|
| 1 | 4 | 7 | 10 | 11 |
| 2 | 5 | 8 | 11 | 12 |
| 3 | 6 | 9 | 12 | 13 |
需求
通过for循环生成与原矩阵列数相同数量的新矩阵,每个新矩阵分别移除原矩阵的一列,且代码需适配任意列数的场景。
实现代码
% 定义原矩阵 original_matrix = [1 4 7 10 11; 2 5 8 11 12; 3 6 9 12 13]; % 获取原矩阵的列数,自动适配任意列数场景 num_cols = size(original_matrix, 2); % 使用cell数组存储所有生成的矩阵 result_matrices = cell(1, num_cols); % 循环处理每一列 for col_idx = 1:num_cols % 构造保留列的索引:排除当前要移除的列 keep_cols = [1:col_idx-1, col_idx+1:num_cols]; % 生成移除当前列后的矩阵并存入cell数组 result_matrices{col_idx} = original_matrix(:, keep_cols); end
代码说明
- 自动适配列数:通过
size(original_matrix, 2)获取列数,无需手动指定循环次数,不管原矩阵是5列还是更多列都能正常运行。 - 结果存储与访问:用cell数组
result_matrices存储每个新矩阵,访问时直接用result_matrices{1}(移除第1列的矩阵)、result_matrices{2}(移除第2列的矩阵)即可查看对应结果,与预期输出完全匹配。 - 列移除逻辑:每次循环中,
keep_cols会生成除当前列以外的所有列索引,通过original_matrix(:, keep_cols)提取子矩阵,完成列移除操作。
内容的提问来源于stack exchange,提问作者Guest
相关产品推荐
相关产品推荐

