2012-01-11 28 views
1

可能なすべてのデータの組み合わせの相関を見つけるスクリプトにスクリプトを含めることができます。これは、次のコードによって手動で行うことができます。可能なすべての組み合わせのループ

clear all 
%generate fake data 
LName={'Name1','Name2','Name3'}; 
Data={rand(12,1),rand(12,1),rand(12,1)}; 
%place in a structure 
d = [LName;Data]; 
Data = struct(d{:}); 
%find the correlation 
[R,P] = corrcoef(Data.Name1,Data.Name2); 
[R2,P2] = corrcoef(Data.Name1,Data.Name3); 
[R3,P3] = corrcoef(Data.Name2,Data.Name3); 

しかし、私はループでこれを行うしたいと思い、私が始めているが、最初のハードルで失敗しています。動作しません私試みたループは、以下の通りである:私はすべての繰り返しで値の異なる組み合わせをループにMathWorks社のMATLABを伝える方法を知ることに苦労してい

SNames=fieldnames(Data); 
for i=1:numel(SNames); 
    [R{i},P{i}] = corrcoef(Data.(SNames{i}),Data.(SNames{i+1})); 
end 

ご協力いただければ幸いです。

答えて

2

はこのような何かを試してみてください:

pairs = combnk (1:3,2) % all combinations of 2 elements taken out of the vector [1,2,3] 
for i = 1 : size (pairs,1) 
    [R{i},P{i}] = corrcoef(Data.(SNames{pairs(i,1)}),Data.(SNames{pairs(i,2)})); 
end 
+0

は完全に機能します。しかし、後で参照するために、行ペア= combnk(1:3,2)を別々に使用することができます。つまり、3つの要素の間の相関関係を見つけるには、この行をpairs = combnk(1:3,3)に変更しますか?あなたの助けをありがとう – user1053544

+0

統計ツールボックス –

+0

はいがありますが、3つの可能なインデックスのうち3つの要素を選んだ場合には、1つの可能性(1,2,3)しかありません。そして、3つの要素の間の相関関係は何ですか...? –

1

@ItamarKatzの答えは良いものです。ただし、統計ツールボックスがない場合は、combnkコマンドを使用することはできません。
ここでcombinations generatorをダウンロードできます。

+0

訂正していただきありがとうございます。統計ツールボックスの一部ではありませんでした。 –

関連する問題