gpt4 book ai didi

matlab - 以极坐标形式打印复数 (Matlab)

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:21 27 4
gpt4 key购买 nike

我想在 Matlab 中以极坐标形式显示复数矩阵,但是所有复数都以矩形形式打印,例如:

\>> sqrt(2)*[1-1i 1+1i; 1i -1]

ans =

1.4142 - 1.4142i 1.4142 + 1.4142i
0 + 1.4142i -1.4142

有没有办法以极坐标形式打印复数?像这样:

\>> sqrt(2)*[1-1i 1+1i; 1i -1]

ans =

2.0000 <-45.0000° 2.0000 < 45.0000°
1.4142 < 90.0000° 1.4142 <180.0000°

它也可以是一个函数,我只是想知道是否已经做了这样的事情。

谢谢。

最佳答案

以 Luis Mendo 所说的为基础,我认为 MATLAB 中没有实用程序可以打印出极坐标形式的复数。但是,我们可以使用 absangle对我们有利,因为这些决定了复数的大小和相位。有了这些,我们可以定义一个辅助函数,帮助以极坐标形式打印出复数的幅度和相位。像这样:

function out = polarPrint(A)
absA = abs(A);
phaseA = angle(A)*180/pi;
out = arrayfun(@(x, y) sprintf('%f < %f', x, y), absA, phaseA, 'uni', 0);

将其放在名为 polarPrint.m 的文件中这样您就可以在需要时在 MATLAB 中调用它。第一行和第二行代码确定存储在 absA 中的复数的幅度和相位。和 phaseA分别来自输入矩阵 A那是数字。如果你想要它的度数,你只需乘以 180 / pi .第三行是最神奇的。我们简单地遍历 absA 中的每个元素和 phaseA , 使用 sprintf 将每个打印成一个字符串用<在两个数字之间分隔,并将此字符串放置在元胞数组中。 arrayfun 遍历数组中的每个元素并将函数应用于该元素。在这种情况下,我会让arrayfun同时遍历两个数组,这将是 A 中每个数字的幅度和相位.因此,我将使用 absAphaseA作为此函数的输入,我想应用于这些元素中的每一个。 uni = 0 flag 表示输出不是数字,但它将是非数字输出的元胞数组(即我们的例子中的字符串)。

out将包含与 A 大小相同的字符串元胞数组您可以打印出来并自己检查。

使用 Luis Mendo 的例子,我们得到:

>> A = sqrt(2)*[1-1i 1+1i; 1i -1];       
>> out = polarPrint(A)

out =

'2.000000 < -45.000000' '2.000000 < 45.000000'
'1.414214 < 90.000000' '1.414214 < 180.000000'

关于matlab - 以极坐标形式打印复数 (Matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28800920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com