다음은 두 개의 동일한 크기의 벡터 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
편집 : 이미지 세기 값을 동일 크기의 벡터를 투여했을 때 MATLAB의 CORR (X, Y)에서 동일한 출력을 생성하기 위해 상기 I는 myCorr (X, Y)를 원하는 명확히한다.
편집 2 : 이제 출력 벡터의 형식은 정확하지만 값은 많이 벗어납니다.
가능한 구문 오류를 수행하지만
에 해당합니다. 'zx'와'zy'는 루프의 특이 값입니다. 나는 당신을 벡터로 그걸 원할 것이라고 생각하고 있습니까? 'zx (i)'와'zy (i)'? 벡터화하고자하는 것을 계산함으로써 루핑을 피할 수 있습니다 :'zx = (X-meanX)/stdX; zy = (Y-meanY)/stdY;'. 또한 MATLAB 버전에 따라 명시 적으로 엘리먼트 단위의 곱셈을 수행해야 할 수도 있습니다 : mult = zx. * zy; – rayryeng
나는 내 함수를 일부 업데이트했는데 여전히 올바른 계수를 반환한다고 생각하지 않는다. – Teej
'다중'또한 잘못되었다. 루프의 끝 부분에있는 하나의 값만보고합니다. – rayryeng