利用Matlab绘制梯度图、散度图、旋度图

1. 分别用mesh()和surf()绘制出函数xx.*exp(-xx.^2 - yy.^2)的例题曲面图。

例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矩阵的值
%figure7个图层单独显示
curl()求旋度

注:
1) type + 函数名 查看实现源码type meshgrid 


  • 35
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!要在Matlab绘制梯度旋度,您可以使用以下步骤进行实验分析: 1. 导入像:首先,您需要导入您要分析的像。使用`imread`函数可以读取像文件并将其存储在Matlab中。 ```matlab image = imread('your_image.jpg'); ``` 2. 计算梯度:使用`gradient`函数可以计算像的梯度梯度表示像中每个像素的颜色变化情况。您可以根据需要计算水平方向和垂直方向的梯度。 ```matlab [dx, dy] = gradient(double(image)); ``` 3. 绘制梯度:使用`quiver`函数可以绘制梯度梯度显示了像中每个像素的梯度向量。您可以使用`quiver`函数指定箭头的位置和方向。 ```matlab quiver(dx, dy); ``` 4. 计算度:使用`divergence`函数可以计算像的度。度表示了梯度向量的发情况。 ```matlab div = divergence(dx, dy); ``` 5. 绘制:使用`imagesc`函数可以绘制显示了像中每个像素的度值。 ```matlab imagesc(div); colorbar; ``` 6. 计算旋度:使用`curl`函数可以计算像的旋度旋度表示了梯度向量的旋转情况。 ```matlab curl = curl(dx, dy); ``` 7. 绘制旋度:使用`imagesc`函数可以绘制旋度旋度显示了像中每个像素的旋度值。 ```matlab imagesc(curl); colorbar; ``` 通过执行以上步骤,您将能够在Matlab绘制梯度旋度,并进行实验分析。请注意,您可以根据需要调整绘方法以及其他参数,以满足您的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值