如何使用MATLAB对任意三维数据绘制三维曲面

如题所述

第1个回答  2017-07-05
方法:将两组数据运用拟合的方法得到关于第三组数据的回归方程,通过回归方程和meshgrid扩充数据点。
工具:Matlab2011a
实例:
(1)数据列:
K/NM/° C/NMS/° At/NM
10 0.1 128
20 0.2 260
30 0.3 393
40 0.4 531
50 0.5 672
60 0.6 815
70 0.7 954
80.27 0.8 1102
90 0.9 1251
100 1 1406
(2)绘制K_C_At之间的三维曲面
(3)步骤:
1)直接在matlab的command窗口导入数据
2)编写m.文件
源文件如下:
%%************Three Dimensional**************%%
%%输入数据
%%刚度K,阻尼C与扭簧峰值差Pt间的三维曲面
%x1:输入刚度K,单位NM/°
%x2:输入阻尼C,单位NMS/°
%y :扭簧振幅差Pt
%%*******************************************
x1=data(:,1);%c数据列
x2=data(:,2);%k数据列
y=data(:,3);%At数据列
%%********************************************
%将多元分线性回归转化为线性回归方程求解
X=[ones(size(x1)) x1.*x1 x1 x2.*x2 x2 x1.*x2];
[b,bint,r,rint,stats]=regress(y,X,0.05);
b
%三维散点图分布
scatter3(x1,x2,y,'filled')
hold on;
%%*********************************************
%数据差值
x1fit=10:1:109;
x2fit=0.1:0.009:1;
%%**********************************************
[xi,yi]=meshgrid(x1fit,x2fit);
%非线性拟合方程
zi=b(1)+b(2)*xi.*xi+b(3)*xi+b(4)*yi.*yi+b(5)*yi+b(6)*xi.*yi;
%绘制三维曲面
meshc(xi,yi,zi);
hold on;
%调整视角
% view(140,30)
%%************************************************
%加注坐标
xlabel('stiffness/(NM/°)');ylabel('damping/(NMS/°)');
zlabel('amplitude of aberration with torque/(NM)');
figure(2)
%残差分析
rcoplot(r,rint);本回答被提问者采纳
相似回答