前言:此文为去年我替人做的一个课题,觉得比较简洁,图形也比较美观,因此放在博文里
数据源我放到了百度云盘高脚杯数据源
有兴趣的可以下载数据,跑程序试一下。也可以单独看看代码,看下实现过程。
- 主函数
% xls_data=xlsread('data_more.xls');
% x=xls_data(1:3:end);
% y=xls_data(2:3:end+1);
% data=[x,y];
% save('data.mat','data');
clc,clear
load data.mat
x=data(:,2);
y=data(:,1);
yy=smooth(y);
figure
plot(yy,x,'.r');
axis equal
grid on
title('orig data');
%% 拟合
% xx=[min(x):0.1:max(x)]';
% fitsize=4;%拟合次数自己定义
% p=polyfit(x,y,fitsize);
% f=polyval(p,xx);
% figure
% plot(f,xx,'linewidth',2);
% axis equal
% grid on
% title('fit data')
%%
figure
[X,Y,Z] = cylinder(yy(end:-1:1));
[m,n]=size(X);
color=ones(m,n);
h=surf(X,Y,Z);
alpha(0.8)%设定透明度
CM=[1,0,1];
CM=repmat(CM,32,1);
colormap(CM);
lighting gouraud;camlight;shading interp
title('the model')
%%
% figure
% pcolor(X,Y,Z);shading interp%伪彩色图
% figure
% contourf(X,Y,Z) %等高线图
% view(3)
% figure,surf(X,Y,Z)%三维曲面
%% 曲线个数为20 slice图
figure
plot_hor(X,Y,Z,1,10,518,'m');
grid on
plot_hor(X,Y,Z,100,5,400,'m');
title('slice')
%% 骨架图 virtical and horizontal
figure
plot3(X,Y,Z,'linewidth',2,'color','b')
hold on
plot_hor(X,Y,Z,1,5,518,'b');
grid on
title('framework');
- 被调用函数,用于绘制高脚杯骨架
function plot_hor(x,y,z,First1,Step1,End1,color)
for i=First1:Step1:End1
x_hor=x(i,1:21);y_hor=y(i,1:21);z_hor=z(i,1:21);
plot3(x_hor,y_hor,z_hor,'linewidth',2,'color',color);
hold on
end
end
- 大致结果如下: