MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 735|回复: 0|关注: 1

[未答复] 结果招领

[复制链接]

论坛优秀回答者

14

主题

1541

帖子

89

最佳答案
  • 关注者: 103
发表于 2015-6-8 00:29:44 | 显示全部楼层 |阅读模式
有如下数据寻求拟合闭合曲线:
   x      y
6230        2640
5820        2850
6400        2730
6780        2970
6080        3200
6530        3200
6950        3200
6810        3350
6070        3750
7170        3470
7400        3630
7570        3580
6210        3300
7680        3800
7980        4000
8180        4130
6200        4380
5980        4500
8380        4330
8490        4530
8650        4510
5970        5150
8670        4810
8530        5050
8670        5130
8740        5220
6050        5700
6250        5870
8550        5810
8350        5660
8310        5740
6100        6370
6330        6320
7750        6300
6150        6600
6490        6480
8010        6480
7500        6460
6720        6530
7260        6530
7000        6800
7380        6770
6470        6890
7050        6950
5910        2630
6050        3760
6000        4170
5970        4500
5980        5150
8470        5400
8640        5860
6050        6030
8180        6220
6160        6660
6220        2630
6400        2730
6600        2850
6820        2980
6110        3170
6590        3250
6210        3290
6910        3240
6920        3390
7390        3500
6060        3260
7650        3600
7270        3580
7850        3750
6180        4000
6100        4070
8070        3900
8270        4020
6250        4420
8430        4180
6100        4450
此问题比较复杂,理想结果不好找,只能得到比较粗糙的结果:
clear all;clc,format short g
fx1=@(b,x)b(1)+b(2)*x+sqrt(b(3)+b(4)*x+b(5)*x.^2+b(6)*x.^3+b(7)*x.^4+b(8)*x.^5+b(10)*x.^b(12));
fx2=@(b,x)b(1)+b(2)*x-sqrt(b(3)+b(4)*x+b(5)*x.^2+b(6)*x.^3+b(7)*x.^4+b(9)*x.^5+b(11)*x.^b(13));
X=[data];
k=11;y=X(:,2)/100;x=(X(:,1)-5600)/100;n=length(y);SSy=var(y)*(n-1);
b=[47.3087354633741,0.171645644562964,-2.37359118027077,43.0456113137917,-0.860051995703498,-0.0782584462025325,0.00197651793978107,4.11759467164280e-09,2.20666780174744e-06,-3.00425501105968e-07,1.18024727268947e-06,0.328823704669165,0.3998481707699];
x1a=min(x);x1b=max(x);r1=range(x);
x11=linspace(x1a-r1/15,x1b+r1/50,1000);
str=num2str([1:n]');
figure(1),clf
y1=fx1(b,x);
y2=fx2(b,x);
for i=1:n
    if abs(y(i)-y2(i))<=abs(y(i)-y1(i))
        y1(i)=y2(i);
    end
end
plot(x,y,'ko','markerfacecolor','k','linewidth',3)
text(x,y+1,str)
hold on
y11=fx1(b,x11);
y22=fx2(b,x11);
plot(x11,y11,'linewidth',3)
plot(x11,y22,'linewidth',3)

axis tight
如图。






nh1086.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

联系我们|版权保护|小黑屋|Archiver|手机版|MATLAB中文论坛 ( 苏ICP备08100737号

GMT+8, 2017-5-28 06:58 , Processed in 0.167987 second(s), 47 queries , XCache On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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