matlab标量场作图
时间:2022-08-10 15:00:00
mooc计算物理基础学习笔记
二维图
立体等值线
z=peaks; %下载数据 contour3(peaks) %立体等值线
matlab 中的 peaks 函数是典型的多元函数。本质上是二元高斯分布的概率密度函数
填色等值线
[c,h]=contourf(z); %填色等值线 clabel(c,h) %标记等值线 colorbar %画色标
三维图
剖面等值线
figure(2) [X,Y,Z,V] = flow;%提取数据 Sx =1:9;Sy =[];Sz= 0;选择剖面位置% cvals = linspace(-8,2,10);%取10条等值线 contourslice(X,Y,Z,V,Sx,Sy,Sz,cvals) axis([0,10,-3,3,-3,3])%xyz轴的范围 daspect([1,1,1])%坐标轴纵横比 campos([0,-20,7])%设置
相机的位置 box on%加盒子
linspace调用方法是linspace(x1,x2,N),linspace主要作用是产生x1和xN点行矢量在2之间
剖面颜色线
figure(3) [x,y,z] = meshgrid(-2:.2:2); v=x.*exp(-x.^2-y.^2-z.^2); slice(v,[5 15],15,10)%在x=5和15,y=15,z=10上做切线 axis([0 21 0 21 0 21]); hold on colorbar('hori')%增加一个水平色轴
colorbar('vert')%增加一个垂直色轴
view([-25 65])
在matlab中,.2代表0.2
(-2:.2:2)表示在-2到2的区间上以0.2的长度为间隔的向量
等值面图
figure(4)
[x,y,z,v] = flow;%速度场数据
p = patch(isosurface(x,y,z,v,-3));%画-3的等值面
isonormals(x,y,z,v,p)%数据规一化
set(p, 'FaceColor', 'red', 'EdgeColor' , 'none');%设置表面与边界的颜色
daspect([1 1 1])%坐标轴比例
view(3)%设置三维图
axis tight; grid on %加格线
camlight; lighting phong%加光照
alpha(.5)%透明度,不加透明度里面看不见
axis tight命令可以让坐标轴调整到紧凑地显示图像或曲线,不留边界的空白
grid on开启网格模式
实体图
load mri D%下载头部照片的立体数据
D= squeeze(D);%把只有一维的数据移走
limits = [NaN NaN NaN NaN NaN 10];
[x,y,z,D] = subvolume(D, limits);%提取立体数据的子集
[fo,vo] = isosurface(x,y,z,D,5);%提取等值面表面的数据
[fe,ve,ce] = isocaps(x,y,z,D,5);%提取等值面端面的数据
figure
p1 = patch('Faces', fo, 'Vertices', vo);%画出等值面表面
p1.FaceColor = 'red';
p1.EdgeColor = 'none';
p2 = patch('Faces', fe, 'Vertices', ve,'FaceVertexCData', ce);%画出等值面的端面
p2.FaceColor = 'interp';
p2.EdgeColor = 'none';
view(-40,24)%不这么设置就是二维图
美化代码
以上面实体图美化为例
daspect([1 1 0.3])
%坐标轴比例
colormap(gray(100))
box on
camlight(40,40) ,
camlight(-20,-10)%两种灯光
lighting gouraud