作业帮 > 综合 > 作业

根据Matlab的已学知识,写一个matlab函数m文件,具体要求如下:

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 18:32:02
根据Matlab的已学知识,写一个matlab函数m文件,具体要求如下:
1、函数功能任意,可以自定,函数参数自定,功能最好与原先课程相关.
2、代码行数在50以上(注释等不算)
3、要有一定的注释,h1,函数信息
%matlab联系之——利用最小二乘法拟合函数
clear;clc
%原始离散点输入
x=[-1.0 -0.5 0.0 0.5 1.0 1.5 2.0];
y=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];
%原始离散点作图
figure(1)
plot(x,y,'o','linewidth',2)
%拟合阶数定义
n=3+1;
p=ones(n,length(x));
%最小二乘法拟合
p(1,1:length(x))=ones(1,length(x));
PP(1,n)=[1];
for h=2:n
p(h,:)=zeros(1,length(x));
a(h-1)=sum((x.*p(h-1,:)).*p(h-1,:))/sum(p(h-1,:).^2);
if h-2>0
a(h-2)=sum(p(h-1,:).*p(h-1,:))/sum(p(h-2,:).^2);
else
p(h,:)=p(h,:)+(x-a(h-1)).*p(h-1,:);
PP(h,n-1:n)=[1 -a(h-1)];
continue
end
p(h,:)=p(h,:)+(x-a(h-1)).*p(h-1,:)-a(h-2)*p(h-2,:);
PP(h,n-h+1:n)=conv([1 -a(h-1)],PP(h-1,n-h+2:n))-a(h-2)*[zeros(1,2) PP(h-2,n-h+3:n)];
end
%相关评价参数的求取
A=zeros(n,n);
for h=1:n
A(h,h)=sum(p(h,:).^2);
end
B=ones(n,1);
for h=1:n
B(h)=p(h,:)*y';
end
for h=1:n
a(h)=B(h)/A(h,h);
end
p_val=0;
for h=1:n
p_val=p_val+a(h)*p(h,:);
end
P_a=zeros(1,n);
for h=1:n
P_a=P_a+a(h)*PP(h,:);
end
E=sum(y.^2)-y*p_val'
%拟合函数画图,同离散点一起显示
x=linspace(x(1),x(length(x)),10*length(x));
P_val=polyval(P_a,x);
figure(1)
hold on
plot(x,P_val,'r','LineWidth',3)
legend('原始离散点','最小二乘法拟合曲线')
xlabel('X'),ylabel('Y')
title('最小二乘法拟合示范结果')