matlab - 在matlab中绘制梯度但只出现空白

标签 matlab plot complex-numbers

我正在尝试绘制复杂函数实部的梯度,但是我得到的是一个空白图。我不明白我做错了什么,因为代码与其他函数(例如虚部)一起使用

% 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');

下面是我得到的图像 enter image description here

我尝试重新缩放图片、域等,但无法显示渐变(箭头)。我在这里做错了什么?

编辑: 我发现它显示空白可能是因为 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);

在本例中,它给出以下内容:

enter image description here

编辑:

要回答您的第二个问题,您可以使用 isinf 将等于 +Inf 或 -Inf 的元素设置为您想要的任何值:

Dx(isinf(Dx)) = 0;

Dy(isinf(Dy)) = 0;

关于matlab - 在matlab中绘制梯度但只出现空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30165977/

相关文章:

r - 在同一页面上绘制多个 ggplot2

r - rplot_ly scatter中的自定义颜色范围

math - 使复杂算术成为 Clojure 项目中的默认值

Python 绘制 for 循环内的 for 循环生成的数据

python - 如何在 SHAP 汇总图上绘制特定特征?

r - R 与 Matlab 中的复数

r - 在 R 中,如何使用 read.table 读取复数(如复数)数据

matlab - 如何在 MATLAB 中对数据进行多元正态分布拟合?

c++ - 如果 Matlab 以 GUI 启动,如何从 MEX 文件中检查

java - 如何从 MATLAB 代码捕获 java 异常