mat2str() on complex values with 0 inaginary part
3 次查看(过去 30 天)
显示 更早的评论
Hi,
Tried mat2str(complex(5,6)) witch seems ok:
ans =
'5+6i'
But other complex values with imaginary part 0 or 0+0i are printed as real values:
mat2str(complex(5,0))
ans =
'5'
mat2str(0+0i)
Seems incorect to me, is this a bug ?
0 个评论
采纳的回答
Jan
2021-1-26
编辑:Jan
2021-1-26
Mathematically 5 is the same as 5+0i, so the output is correct.
So omitting the imaginary part is a question of taste.
If you want to display it, do this expliticitly:
x = 1 + 2i;
sprintf('%g %gi', real(x), imag(x))
Alternatively you can copy the code of mat2str to e.g. mat2stri anywhere in your user-defined folders in the path and remove the line:
imagStr(imagVal == 0) = "";
0 个评论
更多回答(2 个)
Steven Lord
2021-1-26
Not a bug. Many operations in MATLAB, if the result has an all zero imaginary part, will remove that imaginary part. complex is one of the few operations that does not by design.
x = complex(5, 0)
y = x(1)
z = x + 0
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!