2017-02-06 5 views
1

내 작업의 95 %를 포함하는 .m 스크립트 파일이 있습니다. 필자의 임무 중 하나는 특정 계산을 수행 한 다음 다양한 예제에 함수를 사용하는 함수를 작성하는 것이 었습니다.matlab 함수를 게시하는 데 문제가 있습니다.

함수에 대해 별도의 .m 파일을 만들고 함수의 이름을 따서 명명했습니다. 그런 다음 내 주 .m 스크립트에서이 기능을 사용하면 모든 것이 잘 작동합니다. 나는 .m 스크립트를 발행했고 모든 것이 잘 보였다.

그러나 내가 만든 제 기능은 포함되지 않습니다. 이것이 내 작업의 일부이기 때문에, 나는 이것을 메인 스크립트 파일과 함께 돌릴 필요가있다. 원래 발행물에 포함시킬 방법이 없기 때문에이 책을 별도로 게시해야한다고 가정합니다. 여기

내 MATLAB 기능

%% Function rvm 
function [y1,y2] = rvm(x,y) 
    discr = sqrt((x^2)-(4*y)); 
    y1 = (-x-discr)/2; 
    y2 = (-x+discr)/2; 
end 

이며, 여기에 게시 할 때 내가 오류입니다 :

Not enough input arguments. 

Error in rvm(line 4) 
    discr = sqrt((x^2)-(y*c)); 

것은 내가 광범위하게 MATLAB을 사용하지 않은, 그리고 시간이 지났는데 그 이후 나는 그렇게 이 문제를 디버깅하는 데 약간의 문제가 있습니다.

내 주 스크립트가 오류없이 게시되고 기능이 잘 작동하므로 오류가 발생하는 이유가 무엇인지 혼란 스럽습니다. 또한 구문은 괜찮아 보이는 것 같습니다 ...

답변

0

문제는 기본적으로 publish이 아닌 함수를 호출하여 오류의 원인이되는 입력 인수입니다. 당신이 당신의 일에 출판을 위해 xy에 값을 지정하려면

opts = struct('codeToEvaluate', 'x = 1; y = 2;'); 
publish('rvm', opts) 

enter image description here

다른 방법으로,이 중 하나를 사용할 수 있습니다, 당신은 publish에 옵션 구조체를 사용하여 특별히 codeToEvaluate 옵션이 지정할 수 있습니다 file exchange submissions을 사용하면 게시 된 출력 내에 하위 기능을 포함 할 수 있습니다.

+0

hmmm 그래서 함수를 게시하면 함수가 자동으로 호출됩니까? 함수가 이미 내 주 스크립트에서 호출되기 때문에 입력 인수를 설정하고 싶지 않습니다. 스크립트를 정상적으로 인쇄하는 가장 합리적인 옵션은 무엇입니까? –

+0

MATLAB의'publish'는 함수에 의해 호출되는 함수를 출력하지 않습니다 (당신이 내가 링크 한 파일 교환 제출물을 사용하지 않는 한). 위에 제공된 코드를 사용하여 하위 함수 만 게시 할 수 있습니다. 'publish'의 모든 기능을 필요로하지 않는다면 단순히 .m 파일을 출력 할 수도 있습니다. – Suever

1

또는 당신은 단순히 당신의 주요 스크립트에 다음과 같은 마크 업을 추가 할 수 있습니다

%% 
% <include>rvm.m</include> 

이 Matlab의 구문 채색 함수의 코드를 렌더링합니다.

관련 문제