簡體   English   中英

如何在Matlab中手動編寫相關系數?

[英]How do I write correlation coefficient manually in matlab?

以下是一個函數,該函數采用兩個相等大小的向量X和Y,並假定返回一個包含用於圖像對應的單個相關系數的向量。 如果給定兩個相等大小的向量,則該函數應該與matlab中的內置corr(X,Y)函數類似地工作。 現在,我的代碼正在生成一個包含多個兩個數字的向量,而不是一個包含單個數字的向量。 我該如何解決?

function result = myCorr(X, Y)

meanX = mean(X);
meanY = mean(Y);
stdX = std(X);
stdY = std(Y);

for i = 1:1:length(X),
    X(i) = (X(i) - meanX)/stdX;
    Y(i) = (Y(i) - meanY)/stdY;
    mult = X(i) * Y(i);
end

result = sum(mult)/(length(X)-1);
end

編輯:澄清一下,當給定相等大小的圖像強度值矢量時,我希望上述myCorr(X,Y)在matlab的corr(X,Y)處產生相同的輸出。

編輯2:現在輸出向量的格式正確,但是值相差很大。

我建議您使用r = corrcoef(X,Y),它將為您提供在2x2矩陣中尋找的歸一化r值,您可以僅返回r(2,1)項作為答案。 這樣做等同於

r=(X-mean(X))*(Y-mean(Y))'/(sqrt(sum((X-mean(X)).^2))*sqrt(sum((Y-mean(Y)).^2)))

但是,如果您真的想做在問題中提到的事情,您也可以做

r=(X)*(Y)'/(sqrt(sum((X-mean(X)).^2))*sqrt(sum((Y-mean(Y)).^2)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM