2017-11-15 4 views
0

나는 비용 함수의 벡터화되지 않은 형식을 옥타브 단위로 구현하려고합니다.Octave에서 행렬을 인수로 전달할 수 있습니까?

>> X= [1,1; 1,2; 1,3; 1,4;]; 
>> y= [2;4;6;8]; 
>> J = computeCost(X, y, 0.5); 

Xy이 행렬은 다음과 같습니다이

function computeCost(X, y, theta) 
sigma=0; 
theta0 = 0; 
m = length(y); 

for i = 1:m 
sigma = sigma+ theta*X(i)-y(i); 
end; 

J = ((sigma)^2)/2*m; 

end; 

내 옥타브 코드가 내 .m 파일의 코드입니다. 그러나 내 CLI 창에서이 출력을 얻고 있습니다.

Error: computeCost(X, y, 0.5) undefined near line 1, column 5 

코드를 확인했지만 명백한 문제는 없습니다. Octave가 행렬을 함수의 매개 변수로 허용하지 않기 때문입니까?

답변

1

귀하의 질문에 대한 대답은 분명합니다. 예 : 이름 MATLAB은 매트릭스 실험실의 약어입니다. Octave와 Matlab은 매트릭스 작업을 쉽게하기 위해 특별히 고안되었습니다.

코드의 문제는 다음과 같습니다. 함수 정의가 불완전합니다. 반환 값으로 J를 정의하지 않았습니다. 표시되는 오류 메시지는 오류의 위치로 열 10을 나타내야하기 때문에 약간 누락됩니다. 당신이

function J = computeCost(X, y, theta) 

에 코드의 첫 번째 줄을 변경하면이 예상대로 작동 및 출력 값 648을합니다.