在 Matlab 中打印非 ASCII / 符号字符
Posted
技术标签:
【中文标题】在 Matlab 中打印非 ASCII / 符号字符【英文标题】:print non-ASCII / symbolic characters in Matlab 【发布时间】:2013-11-19 16:05:11 【问题描述】:我想要一份声明:
my_angle = 1*pi;
fprintf('My angle is %.3f pi.\n',my_angle/pi);
但这产生了My angle is 1.000 pi
,而不是实际 π 字符。
我正在考虑使用 Unicode... 我发现了一些相关的东西:
Page on Unicode pi Sort of related SO question Perhaps a more relevant SO question【问题讨论】:
除非您将文本放在情节上,否则它与那个 SO 问题并不真正相似。您是在写入文件还是只是尝试打印到命令窗口?也许看到this question and answer。 只是尝试打印到命令窗口。我在搜索时也看到了该页面,但在形成这个问题之前丢失了它。我已添加到问题正文中。 【参考方案1】:我不知道如何使用 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。 @DanielE.Shub:不确定这是否是一个有效的测试,但在 R2013a 和 OS X 上,我更改了我的默认字符集 (feature('DefaultCharacterSet','Windows-1252')
),这些仍然有效。
+1 非常有帮助和鼓舞人心。即使 在 扩展的 ASCII 范围内,只需在打印输出中考虑使用 char(177)
代替 +/-
,或使用 char(215)
代替 ×。谢谢。
@s.bandara: 使用一点 Unicode 你可以做到crazy things in Matlab。不过,在命令窗口中显示内容更难。
哇,您将它们渲染成图像矩阵,还是将text
渲染成轴?【参考方案2】:
答案取决于您的操作系统。在 Windows 上,Matlab 使用非常有限的 windows-1252 字符集。我认为char
的值大于 255 你什么都得不到/正方形。在 Linux 上,您可以使用完整的 UTF8 字符集,并且可以将 char
与您想要的任何值一起使用。
【讨论】:
以上是关于在 Matlab 中打印非 ASCII / 符号字符的主要内容,如果未能解决你的问题,请参考以下文章