在 matlab 中绘制梯度,只出现空白
Plot gradient in matlab and nothing but blank appears
我正在尝试绘制复杂函数实部的梯度,但是我得到的是一个空白图形。我不明白我做错了什么,因为代码与其他功能一起使用(例如虚部)
% Set up
x = -3:0.2:3;
y1 = (-3:0.2:3);
y = (-3:0.2:3)*1i;
[X, Y]= meshgrid(x,y);
% Complex variable s
s = X + Y;
% Complex function f(z)
z = s + 1./s;
figure
subplot(1,2,1);
[Dx, Dy] = gradient(real(z),.2,.5);
quiver(x,y1,Dx,Dy)
title('u(x,y) gradient, vector field');
%%Imaginary part
subplot(1,2,2)
contour(x,y1,imag(z),linspace(-10,10,100)); title('Contour of Im(f)');
xlabel('x'); ylabel('y'); %clabel(C3);
title('Imaginary part');
下面是我得到的图片
我尝试重新缩放和调整图片、域等...但无法显示渐变(箭头)。我在这里做错了什么?
编辑:
我发现它显示空白可能是因为 Dy 和 Dx 变量中有一些 Inf 和 -Inf 值,是否有忽略这些值或将它们设置为 0 的选项?
在我看来是可行的,但是你的箭头线宽太小你看不到。
您可以通过为箭袋图分配句柄来增加它,如下所示:
hQuiver = quiver(x,y1,Dx,Dy);
然后,在创建绘图后,更改其中的许多 properties 中的任何一个,如下所示:
set(hQuiver,'LineWidth',4)
或者在对 quiver
的调用中完成所有操作:
hQuiver = quiver(x,y1,Dx,Dy,'LineWidth',4);
在这种情况下,它给出以下内容:
编辑:
要回答您的第二个问题,您可以使用 isinf:
将等于 +Inf 或 -Inf 的元素设置为您想要的任何值
Dx(isinf(Dx)) = 0;
和
Dy(isinf(Dy)) = 0;
不是空白。您已经绘制了箭袋图(通常用于光流图中)。它在由 x 和 y1 中的点组成的网格形成的每个位置处给出一个向内指向的箭头。
我正在尝试绘制复杂函数实部的梯度,但是我得到的是一个空白图形。我不明白我做错了什么,因为代码与其他功能一起使用(例如虚部)
% Set up
x = -3:0.2:3;
y1 = (-3:0.2:3);
y = (-3:0.2:3)*1i;
[X, Y]= meshgrid(x,y);
% Complex variable s
s = X + Y;
% Complex function f(z)
z = s + 1./s;
figure
subplot(1,2,1);
[Dx, Dy] = gradient(real(z),.2,.5);
quiver(x,y1,Dx,Dy)
title('u(x,y) gradient, vector field');
%%Imaginary part
subplot(1,2,2)
contour(x,y1,imag(z),linspace(-10,10,100)); title('Contour of Im(f)');
xlabel('x'); ylabel('y'); %clabel(C3);
title('Imaginary part');
下面是我得到的图片
我尝试重新缩放和调整图片、域等...但无法显示渐变(箭头)。我在这里做错了什么?
编辑: 我发现它显示空白可能是因为 Dy 和 Dx 变量中有一些 Inf 和 -Inf 值,是否有忽略这些值或将它们设置为 0 的选项?
在我看来是可行的,但是你的箭头线宽太小你看不到。
您可以通过为箭袋图分配句柄来增加它,如下所示:
hQuiver = quiver(x,y1,Dx,Dy);
然后,在创建绘图后,更改其中的许多 properties 中的任何一个,如下所示:
set(hQuiver,'LineWidth',4)
或者在对 quiver
的调用中完成所有操作:
hQuiver = quiver(x,y1,Dx,Dy,'LineWidth',4);
在这种情况下,它给出以下内容:
编辑:
要回答您的第二个问题,您可以使用 isinf:
将等于 +Inf 或 -Inf 的元素设置为您想要的任何值Dx(isinf(Dx)) = 0;
和
Dy(isinf(Dy)) = 0;
不是空白。您已经绘制了箭袋图(通常用于光流图中)。它在由 x 和 y1 中的点组成的网格形成的每个位置处给出一个向内指向的箭头。