feyl 发表于 2007-4-24 16:42

求高人指教:自己写的一个程序

这个是自己写的关于平均采样的程序,可总运行不出结果来,麻烦高人帮忙看一下,谢谢!!!

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
    =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=;
for i=2:1:M
    f_str=;
end
f=inline(f_str);

%==============================================================

function =work(k)
global N m M fai caps_fai_str f_str fCOUNT 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=;
for i=2:1:M
    f_con_str=;
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)'];

%==============================================================
页: [1]
查看完整版本: 求高人指教:自己写的一个程序