求高人指教:自己写的一个程序
这个是自己写的关于平均采样的程序,可总运行不出结果来,麻烦高人帮忙看一下,谢谢!!!
function aver_sampling( )
clear
global N m M fai caps_fai_str f_str f K COUNT
N=[-1 4];m=2;M=N(2)-N(1)+m;K=20;COUNT=8;
error_values=zeros(2,COUNT);
fai=inline(fai_str('x'));
caps_fai_maker();
f_maker();
for k=1:1:COUNT
[error_values(1,k) error_values(2,k)]=work(k);
end
error_values
%==============================================================
function caps_fai_maker()
global N m M caps_fai_str
caps_fai_str=cell(1,M);
for i=1:1:M
caps_fai_str{i}=fai_str(['x+' num2str(-N(1)+m-i+1)]);
end
%==============================================================
function f_maker()
global M caps_fai_str f_str f
c=zeros(1,M);
c(1)=5;c(2)=7;
f_str=[num2str(c(1)) '.*(' caps_fai_str{1} ')'];
for i=2:1:M
f_str=[f_str '+' num2str(c(i)) '.*(' caps_fai_str{i} ')'];
end
f=inline(f_str);
%==============================================================
function [delta e_value]=work(k)
global N m M fai caps_fai_str f_str f COUNT K
x=zeros(1,K+1);F=zeros(1,K);B=zeros(K,M);
delta_value=1/8+k.*(1/32);x(K+1)=N(2);
for i=1:1:K
x(i)=N(1)+(i-1).*(N(2)-N(1))/K;
str_u=u_str(['x+' num2str(-(x(i)+x(i+1))/2)],num2str(delta_value));
str_f_u=['(' f_str ').*(' str_u ')'];
f_u=inline(str_f_u);
F(i)=quad(f_u,x(i),x(i+1));
end
for i=1:1:K
for j=1:1:M
str_fai=fai_str(['x+' num2str((-N(1)+m+1-j))]);
str_u=u_str(['x+' num2str(-(x(i)+x(i+1))/2)],num2str(delta_value));
str_fai_u=['(' str_fai ').*(' str_u ')'];
fai_u=inline(str_fai_u);
B(i,j)=quad(fai_u,x(i),x(i+1));
end
end
B;
C=B*inv(B'*B);
A=F*B*inv(B'*B);
f_con_str=[num2str(A(1)) '.*(' caps_fai_str{1} ')'];
for i=2:1:M
f_con_str=[f_con_str '+' num2str(A(i)) '.*(' caps_fai_str{i} ')'];
end
f_con=inline(f_con_str);
error_str=['(' f_str ')-(' f_con_str ')' ];
error_f=inline(error_str);
square_error_str=['(' error_str ').*(' error_str ')'];
square_error_f=inline(square_error_str);
delta=delta_value;
e_value=quad(square_error_f,N(1),N(2));
%==============================================================
function str=u_str(tempx,delta_values)
str=['1./(' delta_values ').*(((' tempx ')>=-(' delta_values ')./2)&((' tempx ')<=(' delta_values ')./2))'];
%==============================================================
function str=fai_str(tempx)
str=['(1/2.*(' tempx ').^2-3.*(' tempx ')+9/2).*((' tempx ')>2&(' tempx...
')<=3)+(-(' tempx ').^2+3.*(' tempx ')-3/2).*((' tempx...
')>1&(' tempx ')<=2)+(1/2.*(' tempx ').^2).*((' tempx ')>=0&('...
tempx ')<=1)'];
%==============================================================