matlabの下で関数を記述して呼び出す(同じmファイルで)
900 ワード
一般に、1つの関数はmファイルに対応し、ファイル名は関数名と同じである.
c書き慣れたので、メイン関数と関数を同じmファイルに書いてみます.
フォーマットは次のとおりです.
function name
しゅかんすうボディ
end
function s=name(x)
関数本体
end
注意:close allなどの主関数の前にコードを持つことはできません.clear all;とか.
ルーチンを添付
book2_2.m
c書き慣れたので、メイン関数と関数を同じmファイルに書いてみます.
フォーマットは次のとおりです.
function name
しゅかんすうボディ
end
function s=name(x)
関数本体
end
注意:close allなどの主関数の前にコードを持つことはできません.clear all;とか.
ルーチンを添付
book2_2.m
%
function book2_2
n=20;
length = n+1;
x_in = -1:2/100:1;
t = 1:size(x_in,2);
x = -1:2/10:1;
y = 1./(1+25*x.^2)
y_out = 1./(1+25*x_in.^2);
%lagrange
y_out_lag = lagrange(x,y,x_in);
%spline
S=csapi(x,y);
y_out_s = fnval(S,x_in);
plot(t,y_out,'r',t,y_out_lag,'b',t,y_out_s,'y');
title('n=20');
end
function y_out=lagrange(x,y,x_in)
ii=1:length(x)
y_out = zeros(size(x_in))
for i=ii
ij=find(ii~=i);
y1=1;
for j=1:length(ij)
y1=y1.*(x_in-x(ij(j)));
end
y_out=y_out+y1*y(i)/prod(x(i)-x(ij));
end
end