注册 登录
编程论坛 Matlab

[求助] 一个曲线拟合的问题

zhydai 发布于 2007-05-16 08:12, 928 次点击

y=a(1)+a(2)*sin(x)
x=[1:1:15]
y=[4.9927 5.2098 2.7516 -0.1218 -0.7686 1.4059 4.4024 5.4659 3.6188 0.5591 -0.9000 0.5830 3.6445 5.4699 4.3809]
用最小二乘 画出图形 不知各位谁能帮忙
4 回复
#2
尘埃1222007-05-16 10:37

呵呵,你可以利用nlinfit,lsqcurvefit函数编写M文件对数据进行拟合函数中的参数,再绘图:)

问题不大,加油

#3
seidel2007-05-16 20:36
这样的拟合模型MATLAB已经提供了。你使用curve fitting 工具箱就知道了。里面有很多模型,你找一下就会发现啦!
#4
zhydai2007-05-17 10:23

function man()
clear all;
clc;

x0=[ 1 5.3610 ] ; % 初始值 按照第一次的结果进行修改
options=optimest('lsqnonlin');
[x,resnorm] = lsqnonlin(@myfun,x0);
y=x(1)+x(2).*sin(x);
hold on;
plot(y,'r-')
axis square

function F = myfun(x)
a=[1 5.3610
2 5.5916
3 2.9798
4 -0.0731
5 -0.7603
6 1.5500
7 4.7338
8 5.8638
9 3.9012
10 0.6503
11 -0.9000
12 0.6757
13 3.9286
14 5.8681
15 4.7110
]
X=a(:,1);
Y=a(:,2)
plot(X,Y,'b:')
axis square
k = 1:length(X);
F=x(1)+x(2)*sin(x(k)); % 所求最值表达式

麻烦一下能不能帮我修改一下这个程序 谢谢

#5
seidel2007-05-17 14:42
不明白你什么意思,明明是想用myfun()建一个非线性的函数,结果在里面有实现了绘图一连串的命令。
1