Matlab中的所有组合循环

3
我是新手,对Matlab不熟悉,这似乎超出了我的能力范围。感谢您的帮助和提前致谢。
  1. 基本上,我有一个具有列标题的多列数据集。 列数可能因数据集而异。
  2. 需要遍历所有列的组合(例如A + B,A + C ... .B + C,B + D ...等),并运行一个公式(在这种情况下,它是相关性公式,但随后可能是另一个公式)。
  3. 如果特定组合返回“true”,则将返回该对的列标题。
如果您能指点我正确的方向,我将不胜感激。
提前致谢。

也许你可以使用combntns:http://www.mathworks.it/it/help/map/ref/combntns.html - lackadaisical
1个回答

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中的数据集不太熟悉。


亲爱的丹,感谢您如此详细的回复。非常感激!现在当我看到您的代码时,它变得有意义了。 - user3615530

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接