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