2013-11-07 3 views
4

Я хотел бы иметь заявление, что сделало:печати не-ASCII/символические символы в Matlab

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

но который произвел My angle is 1.000 pi, вместо характера я фактического.

Я имею в виду какое-то использование Unicode ...

Я нашел некоторые связанные вещи:

+0

Это не очень похоже на этот вопрос, если вы не накладываете текст на сюжет. Вы пишете файл или просто пытаетесь распечатать в командном окне? Возможно, посмотрите [этот вопрос и ответ] (http://stackoverflow.com/questions/12415767/write-unicode-strings-to-a-file-in-matlab). – horchler

+0

Просто пытаюсь распечатать в окне команд. Я также видел эту страницу во время поиска, но потерял ее, прежде чем формировать этот вопрос. Я добавил к теме вопроса. – Frederick

ответ

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) '.']); 
+0

Хотя это должно работать на Linux и, возможно, на OSX, я не думаю, что это будет работать на Windows. – StrongBad

+0

@ DanielE.Shub: Не уверен, что это действительный тест, но на R2013a и OS X я изменил свой набор символов по умолчанию ('feature ('DefaultCharacterSet', 'Windows-1252')'), и они оба по-прежнему работают. – horchler

+0

+1 Очень полезно и вдохновляет. Даже * в * расширенном диапазоне ASCII просто подумайте о 'char (177)' для ± вместо '+/-' или 'char (215)' для × в ваших распечатках. Благодарю. –

-1

Ответ зависит на вашей ОС. В Windows Matlab использует набор символов Windows-1252, который довольно ограничен. Я думаю, char со значениями больше 255 вы ничего не получите/квадратов. В Linux вы можете использовать полные наборы символов UTF8 и можете использовать char с любым значением, которое вы хотите.

Смежные вопросы