利用Matlab绘制梯度图、散度图、旋度图
2016-09-04 22:07
609 查看
1. 分别用mesh()和surf()绘制出函数xx.*exp(-xx.^2 - yy.^2)的例题曲面图。
例1(mesh):
例2(surf):
;
2. 分别用mesh()和surf()绘制出函数sqrt(xx.^2 + yy.^2)的立体曲面图。
例3:
例4:
3. 分别画出以上连个函数的等高线,并标注等高线值。
例5(conour):
例6(conour):
4. 求以上两个函数的梯度,并在高等线图中以矢量箭头的形式显示各点的梯度。
例7(gradient):
例7(gradient):
5. 求矢量场的散度。
例9(divergence):
6. 求矢量场的旋度。
例10(curl):
例11:
例12:
7. 总结:
注:
1) type + 函数名 [b]查看实现源码(type meshgrid )[/b]
例1(mesh):
x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=xx.*exp(-xx.^2 - yy.^2); mesh(xx, yy, zz); colorbar;
例2(surf):
<pre name="code" class="plain">x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=xx.*exp(-xx.^2 - yy.^2); h=contour(zz, 12); clabel(h);
;
2. 分别用mesh()和surf()绘制出函数sqrt(xx.^2 + yy.^2)的立体曲面图。
例3:
x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=sqrt(xx.^2+ yy.^2); mesh(xx, yy, zz); colorbar;
例4:
x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=sqrt(xx.^2+ yy.^2); surf(xx, yy, zz); colorbar;
3. 分别画出以上连个函数的等高线,并标注等高线值。
例5(conour):
x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=xx.*exp(-xx.^2 - yy.^2); h=contour(zz, 12); clabel(h);
例6(conour):
x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=sqrt(xx.^2 + yy.^2); h=contour(zz, 12); clabel(h);
4. 求以上两个函数的梯度,并在高等线图中以矢量箭头的形式显示各点的梯度。
例7(gradient):
x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=xx.*exp(-xx.^2 - yy.^2); h=contour(zz, 12); clabel(h);
[dx, dy]=gradient(zz,.2,2);
hold on;
quiver(dx, dy);
例7(gradient):
x=linspace(-2, 2, 25); y=linspace(-2, 2, 25); [xx, yy]=meshgrid(x, y); zz=sqrt(xx.^2 + yy.^2); h=contour(zz, 12); clabel(h);
[dx, dy]=gradient(zz,.2,2);
hold on;
quiver(dx, dy);
5. 求矢量场的散度。
例9(divergence):
[x, y, z] = meshgrid(-3:1:3); u=3.*x.^2 + 2.*y.^2 + z.^2; v=x.^2 + 3.*y.^2 + 2.*z.^2; w=2.*x.^2 + 3.*y.^2 + z.^2; div=divergence(x, y,z, u, v, w); figure for i=1:7 %figure mesh(div(:,:,i)); hold on; end
6. 求矢量场的旋度。
例10(curl):
[x, y, z] = meshgrid(-3:1:3); u=3.*x.^2 + 2.*y.^2 + z.^2; v=x.^2 + 3.*y.^2 + 2.*z.^2; w=2.*x.^2 + 3.*y.^2 + z.^2; [curlx, curly, curlz]=curl(x, y,z, u, v, w); figure for i=1:7 mesh(curlx(:,:,i)); hold on; end
例11:
[x, y, z] = meshgrid(-3:1:3); u=3.*x.^2 + 2.*y.^2 + z.^2; v=x.^2 + 3.*y.^2 + 2.*z.^2; w=2.*x.^2 + 3.*y.^2 + z.^2; [curlx, curly, curlz]=curl(x, y,z, u, v, w); figure for i=1:7 mesh(curlx(:,:,i)); hold on; end
figure
for i=1:7
mesh(curly(:,:,i));
hold on;
end
例12:
[x, y, z] = meshgrid(-3:1:3); u=3.*x.^2 + 2.*y.^2 + z.^2; v=x.^2 + 3.*y.^2 + 2.*z.^2; w=2.*x.^2 + 3.*y.^2 + z.^2; [curlx, curly, curlz]=curl(x, y,z, u, v, w); figure for i=1:7 mesh(curlx(:,:,i)); hold on; end
figure
for i=1:7
mesh(curly(:,:,i));
hold on;
end
figure
for i=1:7
mesh(curlz(:,:,i));
hold on;
end
7. 总结:
函数 | 描述 |
linspace(a, b, n) | 在a,b之间取n个点 |
meshgrid() | 生成网格采样点 |
mesh() | 画出立体网状图 |
contour() | 画等高线 |
clabel() | 标注等高线值 |
gradient() | 求梯度 |
hold on | 保持图像 |
quiver() | 画矢量图箭头 |
divergence() | 求散度 |
figure | 显示图形 |
for i=1:7...end | 自动分成7个7*7矩阵的值 |
%figure | 7个图层单独显示 |
curl() | 求旋度 |
1) type + 函数名 [b]查看实现源码(type meshgrid )[/b]
相关文章推荐
- 梯度,散度,旋度的具体物理意义
- 梯度、散度和旋度及在图像处理中的应用(图像融合)
- 梯度、散度和旋度
- 关于梯度、旋度和散度的直观理解
- MatLab 利用TxT 文件绘制波形的方法
- Matlab利用plot绘制正负样本散点图来分析数据
- 【matlab】利用matlab在图形中绘制箭头、标注、圈圈 - 很帅很酷炫
- 正交坐标系以及梯度、散度和旋度
- 梯度、散度和旋度
- 利用matlab如何在图形中绘制箭头
- 利用Matlab绘制图像中的某一行或者某一列的灰度曲线
- 偏导,方导,梯度,散度,旋度
- 利用matlab实现图的绘制、保存、关闭
- 利用MATLAB绘制信号时域波形和信号的频谱
- 我见过最清晰的--理解梯度,散度,旋度
- 梯度旋度散度高斯斯托克斯公式图示
- 梯度、散度、旋度的关系
- 偏导,方导,梯度,散度,旋度
- 梯度、散度和旋度
- matlab入门1--利用plot函数绘制正弦函数图形