matlab怎么绘制三维曲面图
1、plot3三维曲线图。 启动MATLAB,新建脚本(.m文件),在脚本编辑区输入以下代码,然后保存运行后,看到三维曲线图。 close all;clear all;clc z=linspace(0,10,101); x=sin(z);y=cos(z); plot3(x,y,z,'g','LineWidth',2) hold on plot3(x,y,z
不论是在科研工作中,还是在实际工程应用中,常常会遇到三维或者更数据的处理,并且将处理的数据在图形中显示出来,MATLAB平台也提供了很多关于三维图形绘制的函数,利用这些函数可以很方便的实现三维图形的绘制
材料/工具
电脑MATLAB
如果不是网格点数据,那么请用griddata函数插值到网格点数据,然后再surf 如: data=[ 1 1 5.14 1 2 9.56 1 3 8.66 2 1 12.55 2 2 10.51 2 3 2.7 3 1 22.03 3 2 22.97 3 3 32.94 4 2 55.58 4 3 24.55 ]; %第一列为x,第二列为y,第三列为z [xx,yy
方法
首先,打开MATLAB
三维曲面图,可以用surf或mesh命令; 三维曲面图,案例: xx=linspace(-1,1,50); yy=linspace(-2,2,100); [x,y]=meshgrid(xx,yy); z=x.^2+2*y.^2; surf(x,y,z) 结果: 参考:http://zhidao.baidu.com/question/304779250949044964 希望对你有帮
1、点击“File”2、选择“New” 3、点击“Script”
楼主给的表达式和数据范围是不是有问题? 1、就现在给的表达式来说,i是直接作为系数乘到z里面的,曲面无非值大小不同而已,不可能有别的区别。 2、表达式中有23251/x,x不能从0开始。 3、对于比较小的x,23251/x很大,再求e^(23251/x)就很容易
调用surf(得到含有等高线的三维曲面图)来绘制三维曲面图,调用格式如下:
看这些点是不是很规矩的网格点的数据。 如果是网格点数据,适当做点重组,就可以用surf函数得到曲面图。 如果不是网格点数据,那么请用griddata函数插值到网格点数据,然后再surf 如: data=[ 1 1 5.14 1 2 9.56 1 3 8.66 2 1 12.55 2 2 10.51 2
surf(x,y,z,’PropertyName’,’PropertyValue’...)
“墨西哥帽子”:由函数z=sin(r)/r确定曲面,其中r.^2=x.^2+y.^2 (-ay=[-8:0.5:8]; >>[X,Y]=meshgrid(x,y); >>r=sqrt(X.^2+Y.^2); >>Z=sin(r)./r; >>mesh(X,Y,Z) 或者 >>x=[-8:0.5:8]; >>y=[-8:0.5:8]; >>[X,Y]=meshgrid(-8:0.5:8); >>r=sqrt(X.^2
调用该函数对应m文件如下:
1 首先,打开MATLAB 2 1、点击“File” 2、选择“New” 3、点击“Script” 3 调用surf(得到含有等高线的三维曲面图)来绘制三维曲面图,调用格式如下:surf(x,y,z,’PropertyName’,’PropertyValue’)调用该函数对应m文件如下:t=-2:0.1:2;[x,y] =meshg
t=-2:0.1:2;
data=xlsread('文件名.xlsx'); x=data(:,1); y=data(:,2); z=data(:,3); [X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4'); figure; mesh(X,Y,Z);
[x,y] =meshgrid(t);%%表示区域网格控制,目地是为了让x,y形成格点矩阵%%
3组数据就是曲面的x,y,z坐标,程序根据要求不同而异,程序可这样写: [x,y,z]=meshgrid(linspace(-5,5)); val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3;%isosurface(x,y,z,val,0) p = patch(isosurface(x,y,z,val,0)
z=5*x.^2+8*y^3;
从你描述的问题可知,你的数据表中纬度相当于Y,经度相当于X坐标,表中别的值相当于Z坐标,这样可画出三维图形。但是,用经纬度坐标时,一般是画地图的。你没说清,是用一般的直角坐标画图呢,还是用地图的画法呢?请补充下。
surf(x,y,z);
x=1:10;y=16:25; [X,Y]=meshgrid(x,y); %你可以自己看一下X,Y长什么样子,大概就是(X(i,j),Y(i,j))组成了所有(x,y)的组合。 %然后把z算出来,比如z=X.*Y就是说z=z(x,y)=xy mesh(X,Y,z)%或者surf(X,Y,z)或者其他函数,看你想要什么样的图。 参看M
%%设置三维曲面x轴,y轴,z轴,标题对应内容及三个坐标轴的取值范围%%
这个问题已经好几年了,我也几年没在知道答题,看到这个问题又有了答题冲动。。。。 这4行代码,第一行生成了网格数据,赋值给了X、Y两个变量。-3:.125:3表示范围为-3到3,间隔0.125; 第二行用了一个内置快捷函数peaks(),这个函数的作用是根据
xlabel('X');
方法:将两组数据运用拟合的方法得到关于第三组数据的回归方程,通过回归方程和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
ylabel('Y');
你的目标函数有点问题,改成 p = @(X) mvnpdf(X,mu_dist1,cov_dist1).*(normcdf(Nf,X(:,1),X(:,2))).^r.* (1-normcdf(Nf,X(:,1),X(:,2))).^(n-r)*factorial(n)/(factorial(r)*factorial(n-r)); 就可以作图了我得到的图是这样的 surf一般接受
zlabel('Z');
知道一系列点的坐标如下(1.486,3.059,0.1);(2.121,4.041,0.1);(2.570,3.959,0.1);(3.439,4.396,0.1);(4.505,3.012,0.1);(3.402,1.604,0.1);(2.570,2.065,0.1);(2.150,1.970,0.1);(1.794,3.059,0.2);(2.121,3.615,0.2);(2.5
title('surf三维曲面图');
编写mymesh()函数: function mymesh() temdat=load('D:test.txt'); if temdat== -1 ('Error opening the file'); end figure; h=plot3(temdat(:,1),temdat(:,2),temdat(:,3)); set(h,'linestyle','none') hold on; grid on; [x,y]=meshgrid(lin
axis([-2.5 2.5 -2.5 2.5 -5 25]);
这种图形是要有参数的,并且用三维的函数进行绘制,所以,必须根据自己的参数来进行设置。
点击这个绿色的按钮,如图
您好, 作为演示,以二元函数图 z = xexp(-x^2-y^2) 为例讲解基本操作,首先需要利用meshgrid函数生成X-Y平面的网格数据,如下所示: % 生成二维网格数据 xa = -2:0.2:2; ya = xa; [x,y] = meshgrid(xa,ya); 此外,需要计算纵轴数据(z轴),如下
此时,三维曲面就画好了
X(1) = 29*pi/180:0.5*pi/180:39*pi/180; X(2) = 62*pi/180:0.5*pi/180:75*pi/180; [Y1,Y2] = meshgrid(X(1),X(2)); % 生成画曲面需要的格点 Z = f(Y1,Y2); % 计算格点对应的函数值,如果还有关于alpha取平均这件事,你是可以写在函数f内部进行
扩展阅读,以下内容您可能还感兴趣。
MATLAB怎么画出一个平面与一个三维曲面的交线,三维曲面是由散点图画出来的
从你描述的问题可知,你的数据表中纬度相当于知Y,经度相当于X坐标,表中别的值相当于Z坐标,这样可画出三维图形。但是道,用经纬度回坐标时,一般是画地图的。你没说清,是用一般的直角坐标画图呢,还是用地图的画法呢?请补答充下。追问用地图的画法
matlab绘制三维曲面图的问题
x=1:10;y=16:25;
[X,Y]=meshgrid(x,y);
%你可以自己百看一下X,Y长什么样度子,大概就是(X(i,j),Y(i,j))组成了所有问(x,y)的组合。
%然后把z算出来答,比如z=X.*Y就是说z=z(x,y)=xy
mesh(X,Y,z)%或者回surf(X,Y,z)或者其他函数,看你想要什么样的图。
参看MATLAB里meshgrid、mesh这些函数的答帮助。追问z与x,y的关系也不是某种明确的函数关系,就是一组(x,y)值都对应一个确定的z值,(x,y)的组合有10x10组,所以也有100个z值,我就是想问,除了上面我说的方法,有什么更简单的方法能用这100组数画出曲面图。
主要是数据我不想那样几乎一个个的输入,想问一下有没有比较简单的方法,谢谢追答如果对z(x,y)啥都不知道大概就只能输入数据了。如果你已经有原式数据,可以考虑读到MATLAB里再处理一下(比如reshpae()神马的)变成X,Y那种样子。
请教MATLAB绘制三维曲面图的问题
这个问题已经好几年了,知我也几年没在知道答题,看到这个问题又有了答题冲动。。。。
这4行代码,第一行生成了网格数据,赋值给了X、Y两个变量。-3:.125:3表示道范围为-3到3,间隔0.125;
第二行用了一内个内置快捷函数peaks(),这个函数的作用是根据输入的X、Y得到Z的数据,得到有峰有谷这样的一个图形。直接运行peaks(50)就能画出一个图;
第三行meshc()是一个绘图函数,比mesh()多了一个等高线。将前面得到的X、Y、Z三个参数传入就得到了你附的图;
第四行设置坐容标轴范围,6个数分别是x轴、y轴、z轴的取值范围。去掉这行也能画出图。
如何使用MATLAB对任意三维数据绘制三维曲面
方法:将两组数据运用拟合的方法得到关于第三组数据的回归方程,通过回归方程和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.文件
源文7a686964616fe78988e69d8331333363376431件如下:
%%************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);
matlab中怎么画不出三维曲面图
你的目标函数有点问题,改成
p = @(X) mvnpdf(X,mu_dist1,cov_dist1).*(normcdf(Nf,X(:,1),X(:,2))).^r.*...
(1-normcdf(Nf,X(:,1),X(:,2))).^(n-r)*factorial(n)/(factorial(r)*factorial(n-r));
就可以作图了我得到的图是这样的
surf一般接受二维矩阵的输入,默认矩阵中位置相邻的点是相互连接的
假如你有X,Y,Z三个对应的大小一致的二维矩阵
(1,1)-(1,2)-......
| |
(2,1)-(2,2)-.......
| |
......................................
surf默认图中的四点是按照矩阵中的下标位置相连的
x和y数据可以是不等间距的,但是数据必须e799bee5baa6e4b893e5b19e31333335323464是单调递减或递增的
那样才能保证在数组中的位置相邻的数据所表示的点在空间中也是相连的
而有随机数产生的x y数组位置是不确定的,
而用surf画图的时候,还是按数组位置去连接各个节点,
所以得到的曲面图是乱七八糟的你可以试试surf(rand(10),rand(10),rand(10))
曲面是惨不忍睹的
要画这种随机散点的图,通常用三角形网格画分法
首先要根据数据点划分三角网格,确保每个三个网格是有最近邻的三个点组成
这样才能保证画曲面的时候,近邻的点能够被连接在一起
其实用matlab实现三角网格的划分和画曲面图也不麻烦
假如你现在有了随机产生的数组x和y
他们只需要是nx1的数组就可以了,不需要矩阵
然后利用目标函数p可以得到 z,也是nx1的数组
tri=delaunay(x,y) ; %根据x,y数据划分三角网格
trisurf(tri,x,y,z); %利用三角网格画曲面图
根据你的数据和目标函数,用1000个随机点
x=rand(1000,1)*2;
ry=rand(1000,1)*0.4;
rz=p([rx ry]);
tri=delaunay(rx,ry) ;
trisurf(tri,rx,ry,rz);
shading interp;
随机得到图片