2016-03-28 9 views
0

Ich habe 2 m x n Matrizen und möchte kanonische Korrelationen für Segmente innerhalb einer gegebenen Fensterlänge berechnen. Wenn zum Beispiel meine Fensterlänge 100 ist, würde ich gerne die Korrelationskoeffizienten fürMatlab: Schleifen über Segmente eines Arrays

canoncorr(X(1:100,:),Y(1:100,:)) 
canoncorr(X(101:200,:),Y(101:200,:)) 
canoncorr(X(201:300,:),Y(201:300,:)) 
... 

usw. alle in einer Matrix angesammelt haben. Ich interessiere mich nur für den Korrelationskoeffizienten r.

Ich versuche, die folgenden:

win=100; 
r=[]; 
for i=1:win:size(X,1)-win-2 
    [A,B,r(i,:)] = canoncorr(X(i:i+win,:),Y(i:i+win,:)); 
end 

jedoch meine, Matrix führt nicht nur die Werte von Zeile 1, 101, 201 usw. speichern, sondern füllt auch die Zeilen zwischen 1 und 101 und so weiter mit Nullen.

Wenn ich

[A,B,r(i:i+win,:)] = canoncorr(X(i:i+win,:),Y(i:i+win,:)); 

dann indizierte Zuweisung Dimensionen Mismatch versuchen.

Was mache ich falsch?

Antwort

0

i geht von 1, 101, 201, ...

so, überprüfen Sie bitte für 101. Zeile und sehen, ob sie Null sind.

können Sie auch spy(r) Matrixelemente sehen.

Verwandte Themen