ss

a = csvread('200703181922_height_data.csv');
a4=(a-32768)*1.6*0.001;
a3=a4;
a3(a3>(34250-32768)*1.6*0.001)=0;
a3(a3<(34200-32768)*1.6*0.001)=0;
a2 = reshape(a3,1,[]);
zero_id = 1:1:4001250;
zero_id = zero_id*0;
j1 = 0;
for i=1:4001250
    if a2(i)~=0
        j1 = j1+1;
        zero_id(j1) = i;
    end
end
x1 = 1:1:1250;
y1 = 1:1:3201;
y1 = y1*0+1;
x = 1:1:4001250;
y = 1:1:4001250;
for i=1:3201
    for j=1:1250
        x((i-1)*1250+j) = x1(j)*80*0.001;
        y((i-1)*1250+j) = y1(j)*i*12.5*0.001;
    end
end
x_out = 1:1:j1;
y_out = 1:1:j1;
z_out = 1:1:j1;
for i=1:j1
    x_out(i)=x(zero_id(i));
    y_out(i)=y(zero_id(i));
    z_out(i)=a2(zero_id(i));
end
scatter3(x_out',y_out',z_out','filled')
xlim([min(x_out'),max(x_out')]);
ylim([min(y_out'),max(y_out')]);
zlim([min(z_out'),max(z_out')]);
hold on;
X = [ones(length(x_out'),1) x_out' y_out'];

% 拟合,其实是线性回归,但可以用来拟合平面
% 输出为 b = [b(1) b(2) b(3)] 表示 z = b(1) + b(2)*x + b(3)*y 是拟合出来的平面的方程
[b,bint,r,rint,stats] = regress(z_out',X,95);
xfit = min(x_out'):0.1:max(x_out');
yfit = min(y_out'):0.1:max(y_out');
[XFIT,YFIT]= meshgrid (xfit,yfit);
ZFIT = b(1) + b(2) * XFIT + b(3) * YFIT;
mesh(XFIT,YFIT,ZFIT);
% 随机生成一组(x,y,z),这些点的坐标离一个空间平面比较近
x0=1,L1=2;
y0=1,L2=2;
x=x0+rand(20,1)*L1;
y=y0+rand(20,1)*L2;
z=1+2*x+3*y;
scatter3(x,y,z,'filled')
hold on;
X = [ones(length(x),1) x y];

% 拟合,其实是线性回归,但可以用来拟合平面
% 输出为 b = [b(1) b(2) b(3)] 表示 z = b(1) + b(2)*x + b(3)*y 是拟合出来的平面的方程
[b,bint,r,rint,stats] = regress(z,X,95);

% 图形绘制
xfit = min(x):0.1:max(x);
yfit = min(y):0.1:max(y);
[XFIT,YFIT]= meshgrid (xfit,yfit);
ZFIT = b(1) + b(2) * XFIT + b(3) * YFIT;
mesh(XFIT,YFIT,ZFIT);
posted @ 2020-07-04 20:26  沐夏aaron  阅读(161)  评论(0)    收藏  举报