以下是一個函數,它採用兩個相等大小的向量X和Y,並且應該返回一個包含單個相關係數的矢量以用於圖像對應。如果給定兩個相等大小的向量,函數應該類似於matlab中內置的corr(X,Y)函數。現在我的代碼正在生成一個包含多個雙數向量的向量,而不是包含單個數字的向量。我該如何解決?如何在matlab中手動編寫相關係數?
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的科爾(X,Y),以產生相同的輸出。
編輯2:現在輸出矢量的格式是正確的,但是這些值關閉了很多。
可能的語法錯誤。 'zx'和'zy'在你的循環中是單數值。我假設你會想要這些作爲載體? 'zx(i)'和'zy(i)'?你可以通過計算你想要的矢量來避免循環:'zx =(X - meanX)/ stdX; zy =(Y - meanY)/ stdY;'。另外,根據您的MATLAB版本,您可能需要明確執行元素相乘:'mult = zx。* zy;'。 – rayryeng
我已經更新了我的一些功能,但我仍然認爲它沒有返回正確的係數 – Teej
您的'mult'也是不正確的。它只報告一個值,這是在循環結尾。 – rayryeng