li0827cd
2008-11-12, 10:30
初学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
怎样实现?
两个题分开解答,谢谢大家了!
下面是我做的一个多项式拟合曲线的方法,输入拟合阶数,就得该阶数的拟合数据但是有个缺点,
就是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
怎样实现?
两个题分开解答,谢谢大家了!