質問

データのあらゆる可能な組み合わせの相関関係を見つけるループをスクリプトに含めたいと思います。これは、次のコードで手動で実行できます。

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);

しかし、私はこれをループで行いたいと思います、私は始めましたが、最初のハードルで失敗しました。私の試みられたループは機能しません。

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

私は、すべての反復と異なる値の組み合わせでループするようにMatlabに伝える方法を知っていることに苦労しています。

提供されるヘルプは大歓迎です。

役に立ちましたか?

解決

このようなことを試してみてください:

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

他のヒント

@itamarkatzの答えは良いものです。ただし、統計ツールボックスがない場合は、 combnk 指図。
その場合、ダウンロードできます 組み合わせジェネレーター ここから。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top