Octave에서 프로그램을 작성하고 있는데 문제가 발생했습니다. Gauss-Legandre 구적법을 구현했으며 Gauss-Legandre 함수에 몇 가지 인수를 전달하고 함수를 전달합니다. 세포 큐브, 그래서 나는 한 번에 몇 가지 기능을 전달할 수 있습니다. 이 코드는 다음과 같습니다.Matlab/Octave 함수 핸들러와 Nargin
for weight=1:length(w)
temp=1;
for fun=1:length(c)
%liczenie iloczynu f(x_i)g(x_i), x_i - pieriwastki wielomianu Legandra
f=c{fun};
nargin(func2str(c{fun}))
if (nargin (func2str(c{fun})) == 1)
disp('a');
temp*=c{fun}((b-a)/2 * x(weight) + (a+b)/2);
else
(b-a)/2 * x(weight) + (a+b)/2;
temp*=f((b-a)/2 * x(weight) + (a+b)/2,I,points);
end
end
%mnozenie wyniku przez odpowiedni wspolczynnik - wage
temp*=w(weight);
result+=temp;
end
셀 배열에는 통합하려는 함수에 대한 함수 핸들러가 있습니다. 함수가 취하는 인수의 수에 따라 함수에 두 개의 다른 호출을 사용하려고합니다.
function result=a(x)
result=x*x
end
: 셀 어레이의 경우 내 옥타브 작업 디렉토리의 모든 것이 잘 작동하지만 내가 옥타브의 기능을 정의 할 때, 예를 들어, 실행 시간과 같은 디렉토리에하는 .m 파일에 기록되는 함수에 대한 핸들러가있다
c{1}[email protected]
를 입력하고 제 기능이 세포 배열을 전달 Kwadratury 왜 그와 내가 그것을 해결, 그렇게 할 수있는 방법 나는 F를 정의 할 수있다
error: nargin: invalid function
error: called from:
nargin의 오류가 .m 파일뿐만 아니라 Octave에서도 사용할 수 있습니다.
옥타브 nargin이 문자열 만 받아들이 기 때문에 func2str을 사용하기 시작했는데 어쨌든 내 매개 변수가 다른 셀을 사용하여 내 문제를 해결하여 내 함수가 3 개의 변수를 받아 들일 때 C {fun , 2} 그리고 다른 것들을 포함하고 있으며 모든 기능을 별도의 파일에 담아 스코프와 관련하여 걱정할 필요가 없습니다. – Andna
이전에 말했듯이, 모든 기능을 자체 파일로 유지함으로써 문제를 해결했지만, 인라인 함수는 내 코드 테스트 속도를 높이는 데 필요했지만 관리하지는 않았지만 감사합니다 :). – Andna