如何在matlab中格式化文本输出的复数

Jim*_*Jim 8 matlab string-formatting

我有一个复数,我想使用fprintf命令作为文本输出.我没有看到复数的格式规范.是否有捷径可寻?

使用定点的格式规范仅输出实部.

Moh*_*nia 6

根据fprintfsprintf的文档

数字转换仅打印复数的实部.

因此,对于复杂的值,z您可以使用它

sprintf('%f + %fi\n', z, z/1i)
Run Code Online (Sandbox Code Playgroud)

例如

>> z=2+3i; 
>> sprintf('%f + %fi\n', z, z/1i)
2.000000 + 3.000000i
Run Code Online (Sandbox Code Playgroud)

您可以将其包装在匿名函数中,以便将其轻松地作为字符串

zprintf = @(z) sprintf('%f + %fi', z, z/1i)
Run Code Online (Sandbox Code Playgroud)

然后

>> zprintf(2+3i)

ans =

2.000000 + 3.000000i
Run Code Online (Sandbox Code Playgroud)


Ole*_*leg 5

分别处理实部和虚部:

x = -sqrt(-2)+2;
fprintf('%7.4f%+7.4fi\n',real(x),imag(x))
Run Code Online (Sandbox Code Playgroud)

或先转换为字符串 num2str()

num2str(x,'%7.4f')
Run Code Online (Sandbox Code Playgroud)