📄 多项式平滑程序.m
字号:
%平滑参数求解
clear
m=input('m='); %键盘输入m
k=input('k='); %键盘输入k,k-1次多项式
p=input('p='); %键盘输入实验点数p
n=2*m+1;
y=[0.158,0.240,0.375,0.460,0.586,0.675,0.720,0.736,0.670,0.585,0.455,0.313,0.214,0.110,0.067,0.037];
x=zeros(n,k);
for I=-m:m %构造X矩阵行循环
for J=0:k-1 %构造X矩阵列循环
x(I+m+1,J+1)=I^J;
end
end
b=x*inv(x'*x)*x'; %计算平滑系数并在屏幕输出B矩阵
yc=zeros(p,1); % 存放平滑值的矩阵
x=1:1:p; %产生x坐标值(数据序号)
for i=1:m
for j=1:n
yc(i)=yc(i)+b(i,j)*y(j); %计算前m个端点的平滑值
yc(p-m+i)=yc(p-m+i)+b(m+i+1,j)*y(p-2*m-1+j); %计算后m个端点的平滑值
end
end
for i=m+1:p-m
for j=1:n
yc(i) =yc(i)+y(i-m+j-1)*b(m+1,j); %计算除去2*m个端点的平滑值
end
end
subplot(1,2,1) %将画图区域分作两部分,并水平排列,设定当前区域为1
plot(x,y,'.-r',x,yc,'+-b') %画出实验点图和平滑后的图
subplot(1,2,2) %将画图区域分作两部分,并水平排列,设定当前区域为2
plot(y,yc,'.r') %将实验数据和平滑后的数据作图
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -