1. matlab曲线拟合问题
x=[1 2 3 4 5 6 7 8 9 10 100 200 300 400 500 600 700 800 900 1000];
y=[0.8 1.28 1.44 1.46 1.60 1.66 1.78 1.80 1.90 2.08 2.92 2.94 3.14 3.24 3.42 3.54 3.66 3.74 3.78 3.88];
values=spcrv([[x(1) x x(end)];[y(1) y y(end)]],3,1000);
plot(values(1,:),values(2,:),'r');
2. matlab 曲线拟合,求助
f=[3.15 8.25 12.51 16.16 19.37 22.22 24.78 27.12 29.26 31.24 33.08 34.79 36.40 37.92 39.35 40.71 42.00 43.22 44.40 45.52 46.59 47.62 48.62 49.57 50.50 51.39 52.25 53.08 53.89];
x=[1:1:29];
F=@(p,a)p(1)*log(p(2)*a+1)+p(3);
p=lsqcurvefit(F,[1 1 1],x,f)
y=25.9028*(log(0.2780*x+1))-3.2009;
plot(x,y,'r-',x,f,'ko');
grid on;
最后运行结果为:p = 25.9028 0.2780 -3.2009即y=25.9028*(ln(0.2780x+1))-3.2009; 效果如下图
3. 为什么matlab做线性拟合出来曲线图?
为什么matlab做线性拟合出来曲线图?
分析了题主的代码,用regress函数来拟合线性函数是对的,按在出图时,出现了概念性的错误,即 plot(X,Y,'k+',X,z,'r')。
题主这里表示的X和Y实际上是线性拟合中计算时的线性方程组系数,而不是原试验数据。
所以,正确的表述格式是
plot(x1,y,'k+',x,z,'r')
同理,下列语句也有问题
t=1:38
y_fitting=X(t,:)*b;
y_fitting=b(1)+b(2)*x;
plot(t,y_fitting,'r-',t,Y(t,:),'b-');
正确的写法为:
Y=y';
X=[ones(length(y),1),x'];
[b,bint,r,rint,stats]=regress(Y,X);
z=b(1)+b(2)*x;
str = ['y=b1+b2*x']; %显示拟合方程
fprintf('%s\n',str);
str = ['b1=',num2str(b(1)),',b2=',num2str(b(2))];
fprintf('%s\n',str); %显示拟合系数
stats % 检验统计量
plot(x,y,'k+',x,z,'r') %绘制原数据与拟合数据的对比图
legend('Rot-Schätzung','Blau-Ist-wert');
运行结果如下所示。
4. 求助matlab大神,曲线拟合问题
对于matlab的拟合问题,可以使用cftool工具箱。
拟合结果是多种多样的。按你的要求,我试了一个,如下图:
这个拟合函数是一个幂函数,拟合结果为:
f(x) = a*x^ba = 2.102e-015b = 27.35也就是:
y=2.102e-015*x^27.35对于这个问题,对于cftool的使用,简单流程如下:
第一,在matlab命令窗口输入:
x=[2.755 3.035 3.184 3.212 3.236 3.293];y=[0 0.05 0.1 0.15 0.2 0.3];cftool会弹出拟合工具箱窗口,点击Data,X Data和Y Data分别选x、y,然后点击Creat data set。
第二,点击Fitting,弹出窗口点击New fit,Type of fit就是你要拟合的函数类型。我这儿选了Power,即幂函数。然后点击Apply,工具箱窗口就会显现你的数据以及拟合好的函数曲线。
Fitting窗口的Results,会显示此次拟合的结果。
如果没有显示函数图象,点击一下Ploting,确保两条plot都选上了。
你自已可以试试其它函数类型,或者微调其它的参数。比如选择三次多项式:
但是这个不满足你单调函数的要求。多项式拟合效果会很好,但是不一定满足你单调的条件。
你可以试试别的函数,试试别的参数,挑选你觉得合适的。
具体的,细节的cftool的使用,我这儿就不赘述了。你可以在网上找到很多相关资料。
若有不解,欢迎追问。
5. 你好,我想请教您一个MATLAB拟合曲线的问题?
你的问题应该这样来解决。
1、拟合函数可以用多项式近似表示,即
f(x,y) = a0 + a1*x + a2*y + a3*x^2 + a4*x*y + a5*y^2
2、使用regress函数,求解a0 、 a1、 a2、 a3、 a4、 a5的系数,即
[a,bint,r,rint,stats] = regress(Y,X);
3、计算决定系数、F统计量、概率值等统计参数
编程计算可以得到如下结果。
6. matlab曲线拟合的问题
你的问题可以这样解决。
当x=0时,求出y=8x^2+0.09x-98;y=7x^2+0.5x-90;y=5x^2+4x-97的三个y值,即-98,-90,-97,取他们的平均值(-98-90-97)/3=-95
当x=1时,求出y=8x^2+0.09x-98;y=7x^2+0.5x-90;y=5x^2+4x-97的三个y值,即-89.91,-89.5,-88,取他们的平均值(-89.91-89.5-88)/3=-89.1367
依次,类推,得到
x=[0
1
。。。]
y=[-95
-89.1367
。。。]
用polyfit(x,y,2)得到p
值,即
y=p1x^2+p2*x+p3
7. matlab 曲线拟合问题
用fit()函数,拟合出其系数。
运行结果:
实现代码:
8. 求助matlab大神,曲线拟合问题
x=[2.755 3.035 3.184 3.212 3.236 3.293];
y=[0 0.05 0.1 0.15 0.2 0.3];
plot( x, y, 'b.' );
hold on;
p = polyfit( x, y, 3 );
fy = polyval( p, x );
plot( x, fy, 'r-' );
用三次多项式拟合到的多项式参数(P)为:
8.2989 -73.8404 218.8846 -216.1098