我想計算兩組數據之間的相關性,而不使用for-loop
。循環,下面的代碼是解決方案。如何計算此公式而不使用for循環
clear all
clc
x = [1 2 3 4 5 6 7];
y = [7 6 5 4 3 2 1];
sum = 0;
for i = 1:length(x)
sum = sum + (x(i)-mean(x))*(y(i)-mean(y));
end
p = sum/(length(x)-1)
我想計算兩組數據之間的相關性,而不使用for-loop
。循環,下面的代碼是解決方案。如何計算此公式而不使用for循環
clear all
clc
x = [1 2 3 4 5 6 7];
y = [7 6 5 4 3 2 1];
sum = 0;
for i = 1:length(x)
sum = sum + (x(i)-mean(x))*(y(i)-mean(y));
end
p = sum/(length(x)-1)
如下
clear all
clc
x = [1 2 3 4 5 6 7];
y = [7 6 5 4 3 2 1];
p = sum((x-mean(x)).*(y-mean(y)))/(length(x)-1);
看起來像我的協變性。使這些行矢量列向量,然後採取任何一個小對角線cov(x,y)的元素,你應該有相同的結果。
更換
sum = 0;
for i = 1:length(x)
sum = sum + (x(i)-mean(x))*(y(i)-mean(y));
end
p = sum/(length(x)-1)
與
p = sum((x-mean(x)) .* (y-mean(y)))/(length(x)-1)
編輯:哎呀,應該有閱讀評論。
如果你仔細觀察,你可以看到自己,你用同樣的迭代進行的elementwise multiplicatons,如果給你一些提示解決它。 – Divakar 2014-10-03 04:30:41
@Divakar,你的意思是'sum((x-mean(x))。*(y-mean(y)))/(length(x)-1)',它的確有用。謝謝。 – CroCo 2014-10-03 04:36:30
幹得好!感覺很好,我敢打賭,你自己! – Divakar 2014-10-03 04:38:05