| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1032 人关注过本帖
标题:看一下这个程序 曲线拟合
取消只看楼主 加入收藏
zhydai
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-4
收藏
 问题点数:0 回复次数:3 
看一下这个程序 曲线拟合
%exm041022_1.m clear;
k_noise=0.01; %控制噪声水平
[x,y,STDY]=xydata(k_noise); %运行仿真数据产生程序,产生数据
a0=[1 1 1 1]; %被估参数的初试猜测
options=optimset('fminsearch');
options.TolX=0.001; %控制被估参数的迭代精度
options.Display='off'; %避免显示收敛信息
a=fminsearch(@twosins,a0,options,x,y); %计算二乘残差最小时的参数估计
chi_est=twosins(a,x,y)/STDY^2; %估计参数下的Chi2量计算
freedom=length(x)-length(a0); %自由度
Q=1-chi2cdf(chi_est,freedom); %适当度
y_est=a(1)*sin(-a(3)*x)+a(2)*sin(-a(4)*x);
ych='y_e_s_t='; %注意:该格式使图形中est三个字母成为下标
a1=num2str(a(1));a2=num2str(a(2));a3=num2str(a(3));a4=num2str(a(4));
char_y_est=[ych,a1,'*sin(-',a3,'*x)+ ',a2,'*sin(-',a4,'*x)'];
disp(['估计方程',char_y_est])
plot(x,y,'b+');hold on,plot(x,y_est,'r');hold off,axis([0,4,-16,16])

function E=twosins(a,x,y)
%twoexps.m 计算二乘残差的程序
x=x(:);y=y(:);Y=a(1)*sin(-a(3)*x)+a(2)*sin(-a(4)*x); %计算估计函数值
E=sum((y-Y).^2);


function [x,y,STDY]=xydata(k_noise)
%xydata.m
x=[0:0.2:16]';
yo=3*sin(-0.4*x)+12*sin(-3.2*x);
rand('seed',234)
y_noise=k_noise*(rand(size(x))-0.01);
y=yo+y_noise;
STDY=std(y_noise);


运算的结果是错误的 估计方程y_e_s_t=-0.53863*sin(-2.1244*x)+ 0.13755*sin(-1.1765*x)
与原题明显不同
问题出在哪里?请高手赐教



搜索更多相关主题的帖子: 曲线拟合 
2007-05-22 19:42
zhydai
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-4
收藏
得分:0 
在线等
2007-05-22 19:45
zhydai
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-4
收藏
得分:0 
版主求您了  呵呵  没有人回复啊
2007-05-22 21:17
zhydai
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-4
收藏
得分:0 
好的谢谢 我觉得没错误  估计是处置选取等有问题
2007-05-23 09:53
快速回复:看一下这个程序 曲线拟合
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023894 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved