【问题标题】:Matlab Loop of all combinations所有组合的Matlab循环
【发布时间】:2014-05-08 08:38:24
【问题描述】:

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

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

如果您能指出正确的方向,将不胜感激。

提前致谢。

【问题讨论】:

标签: matlab loops


【解决方案1】:

使用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 中的数据集不是很熟悉

【讨论】:

  • 亲爱的丹,感谢您如此详细的回复。真的很感激!现在,当我看到您的代码时,这很有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
相关资源
最近更新 更多