You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Octave如何生成矩阵的所有非重复无序列组合子矩阵与向量

Octave实现所有非空无序列组合的方法

你要的结果本质是矩阵列索引的所有非空无序子集,直接用Octave内置的nchoosek生成组合即可,具体实现代码如下:

完整实现代码

% 你的输入矩阵A,示例用随机5行4列矩阵演示,可替换为你自己的矩阵
A = randn(5, 4);
n_cols = size(A, 2);
% 用cell数组存储不同列数的结果
res = {};

% 遍历所有子集大小:从1列到全部列
for subset_size = 1 : n_cols
    % 生成当前大小的所有列索引组合
    idx_combinations = nchoosek(1:n_cols, subset_size);
    % 逐个取出对应列存入结果
    for i = 1 : size(idx_combinations, 1)
        res{end+1} = A(:, idx_combinations(i, :));
    end
end

结果说明

  • res是存储所有结果的cell数组,顺序和你给出的示例完全一致:
    • 第1~4个元素对应单列组合[C1]、[C2]、[C3]、[C4]
    • 第5~10个元素对应两列组合,从[C1 C2]到[C3 C4]
    • 第11~14个元素对应三列组合,最后一个元素为四列全选的组合
  • 代码可适配任意列数的矩阵,不需要针对4列硬编码,修改输入矩阵A即可直接使用。

如果需要验证结果对应的列索引,可以添加以下代码打印:

for m = 1 : length(res)
    fprintf("第%d个结果对应的列序号:%s\n", m, num2str(idx_combinations(m,:)));
end

内容的提问来源于stack exchange,提问作者George21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:15:01