在Matlab中打印非ASCII / 符号字符

4
我希望有一个语句可以实现以下功能:

my_angle = 1*pi;
fprintf('My angle is %.3f pi.\n',my_angle/pi);

但那只产生了我的角度是1.000 pi,而不是实际的π字符。

我在考虑使用Unicode...

我找到了一些相关的东西:


除非您正在将文本放在图形上,否则它与该SO问题并不真正相似。您是要写入文件还是只是尝试打印到命令窗口?也许可以参考这个问题和答案 - horchler
只是想在命令窗口打印。我在搜索时也看到了那个页面,但在提出这个问题之前就丢失了。我已经添加到问题主体中了。 - Frederick
2个回答

4

我不知道如何使用fprintf,但是sprintf可以使用 - 只需省略分号:

sprintf('My angle is %.3f %c.\n',my_angle,char(960))

或者你可以使用disp

disp(['My angle is ' num2str(my_angle,'%.3f') ' ' char(960) '.']);

虽然这应该在Linux上可以运行,也许在OSX上也可以,但我不认为它能在Windows上运行。 - StrongBad
@DanielE.Shub:不确定它是否是一个有效的测试,但在R2013a和OS X上,我更改了我的默认字符集(feature('DefaultCharacterSet','Windows-1252')),这两个仍然可以工作。 - horchler
非常有帮助和启发性。即使在扩展的ASCII范围内,只需考虑使用char(177)来代替+/-表示±,或者使用char(215)来代替×在您的打印输出中。谢谢。 - s.bandara
@s.bandara:通过一些Unicode技巧,你可以在Matlab中做出疯狂的事情。但是在命令窗口中显示这些内容就比较困难了。 - horchler
哇,你把它们渲染成了一个图像矩阵,还是只是将“文本”放入坐标轴中? - s.bandara
哈哈,现在我的唯一问题是我的字体(Ubuntu和OSX MATLAB)不包括那个字符。 嗯... - Frederick

-1

答案取决于您的操作系统。在Windows上,Matlab使用的是相当有限的windows-1252字符集。我认为如果使用大于255的值,您将得到空白或方块。在Linux上,您可以使用完整的UTF8字符集,并且可以使用任何值的char


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接