所有组合的Matlab循环

时间:2014-05-08 08:38:25

标签: matlab loops

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

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

    提前致谢。

1 个答案:

答案 0 :(得分:0)

使用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是您的列数

your_correlation_test是您的测试函数,它返回一个布尔结果

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

data_header是一个占位符,用于根据列号从数据集中获取标题的正确方法。对不起,我对Matlab中的数据集不是很熟悉