![]() |
[求助]多项式的阶数改为变量问题,程序改进问题
初学matlab,遇到两个问题,请好心人解答
下面是我做的一个多项式拟合曲线的方法,输入拟合阶数,就得该阶数的拟合数据但是有个缺点, 就是sk2的数值大的话,运行起来就很慢。有没有改进的方法?谢谢!程序如下: clear sk1=7 x=[11,14,16,18,20,21.6,24,28,32,35,36] y1=[161.5000,199.1000,253.6000,269.4000,269.400,265.60,259.30,259.200,262.00,248.100,243.3000] str_n={'输入阶数'} nh_n={'5'} bk_n=inputdlg(str_n,'nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn',1,nh_n) bk_n' bk_n1=str2num(char(bk_n(1))) a1=polyfit(x,y1,bk_n1); plot(x,y1,'k:','marker','o') hold on sk2=36 sk=sk2-sk1 s1=polyval(a1,x) for n=1:sk sk3(n)=sk1+n %s1(n)=polyval(a1,sk1) %ssd(n)=a1*l %ssd(n)=a1*[(n+sk1)^4;(n+sk1)^3;(n+sk1)^2;(n+sk1);1]; %多项式公式 end s1=polyval(a1,sk3) plot(sk3,s1) hold off s1 s1是我想要的值s1(n) 另外一个问题:原来程序中的多项式是定值,运行起来就没那么复杂,公式如下:ssd(n)=a1*[(n+sk1)^4;(n+sk1)^3;(n+sk1)^2;(n+sk1);1]; %多项式公式 现在我想把多项式的阶数k定为变量,[(n+sk1)^4;(n+sk1)^3;(n+sk1)^2;(n+sk1);1],将(n+sk1)^k都赋值到一个数组ss1中,ss1=,[(n+sk1)^4;(n+sk1)^3;(n+sk1)^2;(n+sk1);1],然后在ssd(n)=a1*b1 怎样实现? 两个题分开解答,谢谢大家了! |
所有时间均为北京时间。现在的时间是 11:07。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.