2012-05-04 2 views
1

나는 혼자서 MatLab을 배우고 있는데, 나는이 책을 꽤 이해하지 못한다. 기본적으로 저는 Taylor 시리즈의 사용을 통해 사인을 계산할 함수를 작성하고 있습니다.MatLab - 끝내기

function y = sine_series(x,n); 
    %SINE_SERIES: computes sin(x) from series expansion 
    % x may be entered as a vector to allow for multiple calculations simultaneously 
    if n <= 0 
     error('Input must be positive') 
    end 
    j = length(x); 
    k = [1:n]; 
    y = ones(j,1); 
    for i = 1:j 
    y(i) = sum((-1).^(k-1).*(x(i).^(2*k -1))./(factorial(2*k-1))); 
    end 

이 책은 지금 죄 (x)와 Y 사이의 차이를 계산합니다 옵션 출력 err을 포함하는 저를 요구하고있다 : 내 코드는 지금까지 다음과 같습니다. 이 책에서는 이것을 달성하기 위해 nargout을 사용할 수 있다는 것을 암시하지만이 책에이 사용법에 대한 예가 없으며 주제에 대한 MatLab 도움말을 읽는 것이 더 현명한 방법이 아닙니다.

누구든지 나를 이해하는 데 도움을 주실 수 있다면, 정말 고맙겠습니다!

답변

1

nargout을 호출하면 함수가 호출 된 출력 인수의 수를 확인합니다. nargout 크기에 따라 출력 인수 varargout에 항목을 할당 할 수 있습니다.

function [y varargout]= sine_series(x,n); 
%SINE_SERIES: computes sin(x) from series expansion 
% x may be entered as a vector to allow for multiple calculations simultaneously 
if n <= 0 
    error('Input must be positive') 
end 
j = length(x); 
k = [1:n]; 
y = ones(j,1); 
for i = 1:j 
y(i) = sum((-1).^(k-1).*(x(i).^(2*k -1))./(factorial(2*k-1))); 
end 
if nargout ==2 
    varargout{1} = sin(x)'-y; 
end 

차이를 볼 수

[y] = sine_series(rand(1,10),3) 

[y err] = sine_series(rand(1,10),3) 

의 출력을 비교 : 코드의 경우이 같을 것이다.

+0

환상적! 고마워. 이제 나는 이것을 이해한다. 정말 고마워. – Kristian