我试图绘制复杂函数实部的渐变,但我得到的是一个空白图。我不明白我做错了什么,因为代码与其他函数(例如虚部)一起工作
% 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的选项?
答案 0 :(得分:3)
它看起来像我的工作,但箭头的线宽太小,你无法看到。
您可以通过为箭头图指定句柄来增加它,如下所示:
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;
答案 1 :(得分:1)
这不是空白。您已绘制了箭头图(通常用于光流图)。它在由网格形成的每个位置处给出一个向内指向的箭头,其中点和x和y1。