用matlab对矩阵中各列的点进行拟合
序一:
clc
clear;
A=[1,2,3;4,6,1;7,1,3];%原始矩阵
B=size(A);%求矩阵的大小
n=B(1);%求矩阵A的行数
j=2;%所要观察第j列的情况
m=2;%拟合多项式的最高次数
x=[1:1:n];
y=x-x+j;
z=A(:,j)';%第j列的元素
h=scatter3(x,y,z,'filled');
hold on
title('当前列的情况');
plot3(x,y,z);
x1=x;
z1=z;
p=polyfit(x1,z1,m);
x2=1:0.1:n;
z2=polyval(p,x2);
y2=x2-x2+j;
plot3(x2,y2,z2,'r');
hold off;
程序二:
clc;
clear;
A=[1,2,3;4,6,1;7,1,3];%原始矩阵
B=size(A);%求矩阵的大小
n=B(1);%矩阵A的行数
j=3;%所要观察第j列的情况
m=2;%拟合多项式的最高次
x=[1:1:n];
y=x-x+j;
z=A(:,j)';%第j列的元素
subplot(2,2,1);
h=scatter3(x,y,z,'filled');
hold on
title('当前列的情况');
plot3(x,y,z);
x1=x;
z1=z;
p=polyfit(x1,z1,m);
x2=1:0.1:n;
z2=polyval(p,x2);
y2=x2-x2+j;
plot3(x2,y2,z2,'r');
hold off;
subplot(2,2,2);
for j1=1:n
y=x-x+j1;
z=A(:,j1)';%第j列的元素
h=scatter3(x,y,z,'filled');
hold on;
if j1==j
%plot3(x,y,z,'r');
x1=x;
z1=z;
p=polyfit(x1,z1,m);
x2=1:0.1:n;
z2=polyval(p,x2);
y2=x2-x2+j;
plot3(x2,y2,z2,'r');
else
%plot3(x,y,z);
x1=x;
z1=z;
p=polyfit(x1,z1,m);
x2=1:0.1:n;
z2=polyval(p,x2);
y2=x2-x2+j1;
plot3(x2,y2,z2,'g');
end
end
hold on ;
title('总体情况1');
hold off;
subplot(2,2,3);
mesh(A);
hold on ;
title('总体情况2');
hold off;

您当前的位置: