在复坐标上定义的Matlab绘图函数

在复坐标上定义的Matlab绘图函数,matlab,plot,Matlab,Plot,我想画一些像这样的图: -轴为实数且为复数向量(通常为纯实数或imag)的imag部分 -在给定的情况下进行一些三维可视化 首先,将复函数定义为(Re(x),Im(x))的函数。在复分析中,您可以将任何复函数分解为其实部和虚部。换言之: F(x) = Re(x) + i*Im(x) F(x,y) = Re(x,y) + i*Im(x,y) 在二维网格的情况下,显然可以扩展到根据(x,y)定义函数。换言之: F(x) = Re(x) + i*Im(x) F(x,y) = Re(x,y)

我想画一些像这样的图:

-轴为实数且为复数向量(通常为纯实数或imag)的imag部分

-在给定的情况下进行一些三维可视化


首先,将复函数定义为
(Re(x),Im(x))
的函数。在复分析中,您可以将任何复函数分解为其实部和虚部。换言之:

F(x) = Re(x) + i*Im(x) 
F(x,y) = Re(x,y) + i*Im(x,y) 
在二维网格的情况下,显然可以扩展到根据
(x,y)
定义函数。换言之:

F(x) = Re(x) + i*Im(x) 
F(x,y) = Re(x,y) + i*Im(x,y) 
在你的情况下,我假设你想要2D方法。因此,让我们使用
I
J
分别表示实部和虚部。另外,让我们从一个简单的例子开始,比如
cos(x)+i*sin(y)
,它是基于非常流行的。它不精确,但我稍微修改了一下,因为情节看起来不错

以下是您将在MATLAB中执行的步骤:

  • 根据
    I
    J
  • 在两个域中创建一组点-类似于
    meshgrid
    的东西将起作用
  • 使用三维可视化绘图-可以绘制单个点,或在曲面上绘制(如
    surf
    ,或
    mesh
  • NB:因为这是一个复数函数,所以让我们绘制输出的大小。你的细节很模糊,所以我们假设我们正在绘制震级

    让我们在代码中逐行执行此操作:

    % // Step #1
    F = @(I,J) cos(I) + i*sin(J);
    
    % // Step #2
    [I,J] = meshgrid(-4:0.01:4, -4:0.01:4);
    
    % // Step #3
    K = F(I,J);
    
    % // Let's make it look nice!
    mesh(I,J,abs(K));
    xlabel('Real');
    ylabel('Imaginary');
    zlabel('Magnitude');
    colorbar;
    
    这是您得到的结果图:

    让我们慢慢地逐步完成这段代码。步骤1是根据
    I
    J
    定义的匿名函数。步骤#2将
    I
    J
    定义为矩阵,其中
    I
    J
    中的每个位置为您提供在其匹配空间位置处的实坐标和虚坐标,以便在复函数中进行评估。我已经将这两个域定义为介于[-4,4]之间。第一个参数跨越实轴,而第二个参数跨越虚轴。很明显,如果你认为合适的话,可以改变限制。确保步长足够小,以使绘图平滑。步骤#3将获取每个复数值并评估结果。之后,创建一个三维网格图,该图将在前两个维度中绘制实轴和虚轴,并在第三个维度中绘制复数的大小
    abs()
    取MATLAB中的绝对值。如果矩阵中的内容是实数,那么它只返回数字的正数。如果矩阵中的内容是复杂的,则返回复杂值的大小/长度

    我已经标记了轴,并在侧面放置了一个
    颜色条
    ,以将曲面图的高度可视化为颜色。它还以更令人愉悦和直观的方式让您了解值的高度和长度

    作为向您的方向的轻轻推动,让我们从这个复杂函数中取一个片段。让我们使实部等于0,而虚部介于
    [-4,4]
    之间。您可以使用
    plot3
    来绘制点,而不是使用
    mesh
    surf
    。因此,请尝试以下方法:

    F = @(I,J) cos(I) + i*sin(J);
    
    J = -4:0.01:4;
    I = zeros(1,length(J));
    
    K = F(I,J);
    plot3(I, J, abs(K));
    xlabel('Real');
    ylabel('Imaginary');
    zlabel('Magnitude');
    grid;
    
    默认情况下,
    plot3
    不提供网格,这就是存在
    grid
    命令的原因。这就是我得到的:

    正如预期的那样,如果函数是纯虚构的,那么应该只有正弦贡献(
    i*sin(y)

    如果需要,您可以使用它并添加更多跟踪


    希望这有帮助

    多宽泛的回答啊。:)