所有组合的Matlab循环

所有组合的Matlab循环,matlab,loops,Matlab,Loops,我是Matlab新手,这似乎超出了我的理解范围。感谢您的帮助并提前表示感谢 基本上,我有一个带有列标题的多列数据集。列编号可能因数据集而异 需要迭代所有列的组合(例如A+B、A+C…B+C、B+D…等)并运行一个公式(在本例中,它是一个相关公式,但随后可能是另一个公式) 如果特定组合返回“true”,则将返回该对的列标题 如果你能给我指出正确的方向,我将不胜感激 提前感谢。使用nchoosek获取所有列对: pairs_columns = nchoosek(1:m, 2); pairs = {}

我是Matlab新手,这似乎超出了我的理解范围。感谢您的帮助并提前表示感谢

  • 基本上,我有一个带有列标题的多列数据集。列编号可能因数据集而异
  • 需要迭代所有列的组合(例如A+B、A+C…B+C、B+D…等)并运行一个公式(在本例中,它是一个相关公式,但随后可能是另一个公式)
  • 如果特定组合返回“true”,则将返回该对的列标题
  • 如果你能给我指出正确的方向,我将不胜感激


    提前感谢。

    使用
    nchoosek
    获取所有列对:

    pairs_columns = nchoosek(1:m, 2);
    pairs = {};
    
    for pair = 1:size(pairs_columns,1)
        flag = your_correlation_test(data(:,pairs_columns(pair,1)), data(:,pairs_columns(pair,2)));
        if flag
            pairs{end+1,1} = data_header(pairs_columns(pair,1));
            pairs{end,2} = data_header(pairs_columns(pair,2));      %// Note that you don't need end+1 anymore as the previous line will have already increased the number of rows in the vector
        end
    end
    
    m
    是您的列数

    您的相关性测试是返回布尔结果的测试函数

    data
    是您的数据集(我假设您可以按列号索引它?)


    data\u header
    是一个占位符,用于根据列号从数据集中获取标题的正确方法。抱歉,我不太熟悉Matlab中的数据集

    也许您可以使用combntns:亲爱的Dan,谢谢您如此详细的回复。真的很感激!现在,当我看到您的代码时,它是有意义的。