声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 729|回复: 0

[综合讨论] 求高人指教:自己写的一个程序

[复制链接]
发表于 2007-4-24 16:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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)'];

%==============================================================
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 08:38 , Processed in 0.060701 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表