2015-01-20 2 views
0

I MATLAB에 다음 코드를 가지고,하지만 난 역 기능을 사용하여 이상한 오류가 발생합니다 : 내가 메인 (기본값)에서 스크립트를 생성 한 MATLAB 폴더를matlab에 역 함수가 정의되어 있지

x = load('E:\myFile1.dat'); 
y = load('E:\myFile2.dat');  
ones = ones(100,1); 
X = [x,ones]; 
XtX = X'*X; 
XtXinv = inverse(XtX); 
XtY = x' * y; 
w = XtXinv * XtY; 


??? Undefined function or method 'inverse' for input arguments of 
    type 'double'. 

을 " 내 문서 "창문에. 어떤 사람들은 나쁜 현재 디렉토리 때문에 그것을 말했다. 하지만 내 스크립트 파일은 "내 문서"에 있습니다. 이것에 대한 도움이 필요하십니까?

+3

'inverse'는 Matlab 함수가 아닙니다. – David

+3

그러나 행렬 역수를 계산하려는 경우 ['inv'] (http://www.mathworks.com/help/matlab/ref/inv.html)입니다. 대신에''mldivide' (http://www.mathworks.com/help/matlab/ref/mldivide.html)를 사용하여'w = XtX \ XtY;'를 시도해 볼 수도 있습니다. 또한,'ones' 함수를 변수로 재정의하는 것은 나쁜 생각 일 수 있습니다. – horchler

+0

또 다른 코멘트. 자체적으로 역수를 계산하는 것은 수치 적 불안정성 때문에 일반적으로 나쁜 생각입니다. @horchler가 말하는'mldivide'를 꼭 사용해야합니다. 존 쿡 (John Cook)은 역관계를 찾는 것을 피해야하는 이유에 대해 훌륭한 논거를 제시합니다. 여기를 읽으십시오 : http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/ – rayryeng

답변

0

MATLAB 함수 inverse이 없습니다. 거의 확실하게 대신 inv 함수를 사용하려고합니다.

그러나 다른 사람들이 언급했듯이 수치 안정성을 이유로 inv을 직접 사용하는 것은 좋지 않습니다. \ 또는 /을 사용하여 최종 답을 계산하는 것이 좋습니다.

+0

자세한 설명을 해주셔서 감사합니다. – Mohammadreza

관련 문제