Matlab и русский язык
Имеется Matlab R13. Все настройки, связанные со шрифтами для рабочей среды, осуществляются через font.properties (jre1.3.1). В принципе, в командной оболочке Matlab’а и в редакторе надписи на русском языке отображаются, хоть и коряво (несмотря на то, что шрифты прописаны TrueType из винды). Проблемы начинаются при вводе по-русски: русские буквы просто не вводятся.
Далее, при построении графиков, русский текст выводится в неверной кодировке (т.е. шрифты-то русские, но символы выводятся не те). Причем настройки касательно окон графиков я не нашел нигде, только уже из самих этих окон можно вызвать свойства текста и поменять шрифт, что не дает нужного эффекта. В NT-ых виндах (вплоть до ХР) та же проблема, она лечится весьма оригинально:
1. В реестре открыть раздел HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Nls\Codepage,
2. Изменить значение параметров 1250 и 1252 с cp_1250.nls на cp_1251.nls и cp_1252.nls на cp_1251.nls соответственно. Для Windows 2000/XP названия чуть поменялись — C_1251.NLS
Т.е. похоже Matlab не те кодировки пытается использовать. Однако, как в этом случае поступать в Линуксе?
Подскажите что-нибудь пожалуйста!
P.S. Кодировка у меня — KOI8-R.
Документация
MathWorks ® предложения MATLAB ® переведенный на японский, корейский язык и китайский язык. Если вам установили вашу установку локализации на японский язык, корейский язык или китайский язык, можно выбрать язык, на котором появляется рабочий стол MATLAB. Настольные элементы (такие как диалоговые окна, имена кнопки и пункты меню) и сообщения об ошибке и предупреждающие сообщения появляются на языке, который вы выбираете.

Чтобы изменить настольный язык, на вкладке Home, в разделе Environment, нажимают Preferences и выбирают MATLAB> General. Затем задайте настольный язык, на котором появляется рабочий стол MATLAB. Если Desktop language, выпадающий список не отображен, то эта опция не поддерживается в вашей системе.
Примечание
Необходимо перезапустить MATLAB для изменения настройки, чтобы вступить в силу.
Большинство настольных элементов и приложений используют язык, выбранный в настройке Desktop language выпадающий список. Однако системные диалоговые окна, такие как селекторы файла или палитры цветов, используют язык отображения операционной системы.
Смотрите также
Похожие темы
- Переведенная документация
- Концепции установки локализации для интернационализации
Как настроить MATLAB для корректного отображения Русских (Кириллических) символов на фигурах и графиках под Linux?
Установил MATLAB R2008b под Ubuntu 12.04.5 LTS и Windows XP (в VirtualBox).
Системная локаль под Ubuntu — Unicode (en_US.UTF-8).
Для совместимости с Windows я запускаю MATLAB в Ubuntu с локалью ru_RU.CP1251 — создал простой скрипт для запуска MATLAB:
cat /opt/MATLAB_R2008b/bin/matlab-run #!/bin/bash export LANG="ru_RU.CP1251"; export LC_ALL="ru_RU.CP1251"; /opt/MATLAB_R2008b/bin/matlab -desktop
После этого slCharacterEncoding и feature(‘DefaultCharacterSet’) возвращают ожидаемое значение windows-1251.
В моей системе много шрифтов, большинство из которых поддерживает Русские (Кириллические) глифы. Те шрифты, про которые говорится в Arch Wiki стоят точно (это пакеты xfonts-100dpi, xfonts-75dpi).
Русский текст отображается нормально в uicontrol (см. скриншот):
uicontrol('String','Русский=Russian','Position',[0 0 200 200])
Однако не отображается нормально в названии графика (title) и в подписях осей (xlabel, ylabel) — см. скриншот:
x = linspace(0,2*pi,100); y = sin(x); xlabel('x, в радианах','interpreter','none'); ylabel('y, значение sin(x)','interpreter','none'); title('y, значение sin(x)','interpreter','none');
Не понимаю, как это исправить. На StackOverflow ответа пока тоже нет. Многократное гугление не помогло.
Установка пакетов с шрифтами Type1 (cm-super, t1-cyrillic, t1-teams) не помогает.
Как еще я должен настроить MATLAB или систему для корректного отображения Русских (Кириллических) символов на фигурах в Linux?
nrbrtx
17.08.14 17:51:35 MSK

Насколько помню под linux стоит использовать всё-таки unicode. Да и зачем целый matlab для графиков?
dinn ★★★★★
( 17.08.14 18:18:16 MSK )
Ответ на: комментарий от dinn 17.08.14 18:18:16 MSK
Спасибо за ответ.
Не только для графиков. Это просто пример, демонстрирующий проблему. Под UTF-8 работает чуть лучше. Но как я уже писал, нужна совместимость с Windows, поскольку часть команды работает по Windows. А каждый раз iconv запускать мало радости.
Scilab’ом, wxMaxima и Gnuplot я тоже активно пользуюсь.
nrbrtx
( 17.08.14 18:23:56 MSK ) автор топика
Ответ на: комментарий от nrbrtx 17.08.14 18:23:56 MSK

Если так нужна совместимость, то скорее всего придётся не обращать внимания на подписи на графиках, или перейти на английские подписи.
dinn ★★★★★
( 17.08.14 18:29:45 MSK )
Ответ на: комментарий от dinn 17.08.14 18:29:45 MSK
Уже делаю похожим образом — в Linux английские подписи, в Windows русские. Но хотелось бы иметь везде русские.
nrbrtx
( 17.08.14 18:43:40 MSK ) автор топика
Ответ на: комментарий от nrbrtx 17.08.14 18:43:40 MSK

Перфекционизм в отношении matlab до хорошего не доведёт. Да и всё равно красивые подписи нужны только для подготовки печатного варианта, а его всё равно лучше не в matlab делать. Хотя может в новых версиях графики и получше выглядят.
dinn ★★★★★
( 17.08.14 18:51:26 MSK )
Ответ на: комментарий от dinn 17.08.14 18:51:26 MSK
Пока поборолся скопировав файлы шрифтов из Windows, положил их в /usr/local/fonts/truetype, запустил там mkfontscale и mkfontdir, теперь под Linux у меня есть нормально отображающийся русский шрифт Tahoma GUAP (похоже от Microcap 8 GUAP Edition).
Получается, что проблема была в особом формате ttf-файла шрифта (он должен поддерживать CP/Windows-1251).
Оставлю здесь список шрифтов, которые нормально отображаются при кодировке UTF-8:
- clean
- free avant garde
- free bookman
- free chancery
- free courier
- free helvetian
- free paladin
- free schoolbook
- free times
- oldslavic
- tahoma guap
- teams
- terminus
Спасибо за помощь!
nrbrtx
( 17.08.14 19:18:32 MSK ) автор топика
Ответ на: комментарий от nrbrtx 17.08.14 19:18:32 MSK

Если тебя это успокоит, в 2014a и макоси тоже знаки вопросов вместо подписей. Но ведь это же матлаб, чего ты ожидал 🙂
ptarh ★★★★★
( 17.08.14 21:59:09 MSK )
Ответ на: комментарий от ptarh 17.08.14 21:59:09 MSK
Похоже они так прикалываются. Посмотрел я, значит, шрифт который подошел, а он работает оказывается только из-за того, что в нем нет секции 1251.
cat /usr/local/fonts/truetype/fonts.dir tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-adobe-standard tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-ascii-0 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso10646-1 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-1 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-10 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-11 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-13 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-15 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-16 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-2 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-3 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-4 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-5 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-8 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-iso8859-9 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-koi8-e tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-koi8-r tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-koi8-ru tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-koi8-u tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-koi8-uni tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-microsoft-cp1252 tahoma-g.ttf -microsoft-tahoma guap-medium-r-normal--0-0-0-0-p-0-tis620-2
Когда-то я где-то уже читал, что кириллицу матлаб хранит ISO-8859-5.
Дааа, этот матлаб полон чудес.
nrbrtx
( 17.08.14 23:03:59 MSK ) автор топика
Ответ на: комментарий от ptarh 17.08.14 21:59:09 MSK
кстати, а они там уже починили отображение знака «минус» с теховским интерпретатором?
demidrol ★★★★★
( 17.08.14 23:06:32 MSK )
Ответ на: комментарий от nrbrtx 17.08.14 23:03:59 MSK

Матлаб начинался как связка костылей, и с тех пор ничего особо не изменилось. Только IDE вылизали и документацию, язык как был говно-говном, так и остался 🙂 Такие дела.
ptarh ★★★★★
( 17.08.14 23:07:00 MSK )
Ответ на: комментарий от demidrol 17.08.14 23:06:32 MSK

Не знаю, я стараюсь поменьше использовать этот чудесный продукт, и если бы слоупоки в R довели до ума хоть где визуальный дебаггер(я в курсе про RStudio, но она работает через пень-колоду и часто просто вешает процесс), то я бы лучше писал в 3 раза больше кода и конвертировал данные в нужый вид скриптами, чем матюкаясь вправлял мозги этому чуду программерской мысли. 🙂 К сожалению, для одноразовых вещей, а большая часть анализа данных именно из них, он все еще самый выгодный вариант по времени.
ptarh ★★★★★
( 17.08.14 23:10:45 MSK )
Ответ на: комментарий от ptarh 17.08.14 23:07:00 MSK

язык как был говно-говном, так и остался
Ну если изначально это был эдакий интерпретируемый фортран с множеством удобств, то сейчас они туда чего только не засунули, сохраняя обратную совместимость. Хотя мне и не доводилось в далёкие дебри лезть. Вообще сейчас julialang пиарят, но когда ещё оно стабилизируется и обрастёт достаточным количеством модулей.
dinn ★★★★★
( 17.08.14 23:12:20 MSK )

Хммм. Не знал, что матлаб под линукс есть. Всё как-то максимой пользуюсь.
kaktusenok
Установка MATLAB имеет несколько хитростей, знать которые необходимо во избежание досадных ошибок, а также правильной настройки параллельного программирования.
- «не параллельная» часть: MATLAB, Simulink и их компоненты (Toolbox’ы. );
- «параллельная» часть: MATLAB Distributed Computing Server + Parallel Computing Toolbox.
- Для настольных вычислений (только «не параллельная часть»).
- Для параллельных вычислений в сети (только «параллельная часть»).
- Для настольных и параллельных вычислений вместе (обе части).
По сути выбор между вариантами осуществляется установкой или не установкой компонента «MATLAB Distributed Computing Server». Поэтому при выборе типа установки «Typical» или «Custom» всегда выбираем «Custom»:

Вариант 1. Для настольных вычислений
Этот вариант подходит для большинства пользователей. Единственная тонкость — это снять галочку «MATLAB Distributed Computing Server»:

- задействовать можно только процессоры и ядра локальной машины;
- средства параллельных вычислений ограничиваются инструкцией parfor (чего обычным пользователям хватает с лихвой).
Дополнения к варианту 1
Система MATLAB использует понятие текущего каталога при работе с М- и МАТ-файлами во время сеанса работы. Начальный текущий каталог определен в файле запуска, который ассоциирован с ярлыком запуска системы MATLAB, расположенном на рабочем столе. Щелчок правой кнопки мыши, установленной на этом ярлыке, и выбор контекстного элемента «Свойства/Properties» позволяет изменить начальный каталог, используемый по умолчанию:

Теперь при запуске MATLAB видим заданный текущий каталог:

В ранних версиях MATLAB были проблемы с поддержкой русского языка. Также были проблемы с загрузкой моделей Simulink, где названия и/или имена файлов были на русском. Как правило, такие проблемы решаются с помощью следующих команд:
set_param(0,'SavedCharacterEncoding','windows-1252'); set_param(0,'CharacterEncoding','windows-1252'); slCharacterEncoding('windows-1252'); feature('MultibyteCharSetChecking',0);
Если эти команды записать в файл с именем «startup.m» и сохранить данный файл в начальный рабочий каталог (см. выше) или в один из каталогов PATH (Меню «File» > «Set PAth. «), то записанные команды будут выполняться автоматически при каждом запуске MATLAB.
Вариант 2. Для параллельных вычислений в сети
При установке нужно установить галочку «MATLAB Distributed Computing Server», а также выбрать компоненты (Simulink, Toolbox’ы), которые необходимы в процессе параллельных вычислений.

Внимание! Режим параллельных вычислений подразумевает, что интерактивной работы с MATLAB нет и не будет.
Следствие 1. Нет иконок приложения MATLAB. Нет ассоциаций с файлами (для открытий файлов по двойному щелчку).
Следствие 2. MATLAB интерактивно запустить всё же можно. Достаточно открыть папку с установленной программой и в каталоге bin запустить matlab.exe. Но при параллельных вычислениях может возникнуть ошибка:
MATLAB_PREFDIR must be an absolute path.
Cannot set preferences directory to the relative path Mathworks\MATLAB\2012b.
Если всё-таки требуется выполнять интерактивные вычисления и параллельные, то переходим к варианту 3.
Дополнения к варианту 2
Следует настроить и установить службу MDCE. В принципе, хватает стандартных настроек. НО если вы работаете в русскоязычном домене Windows Server 20XX, то придётся исправить имена групп. Об этом подробно написано здесь.
Вариант 3. Для настольных и параллельных вычислений вместе
Слово вместе говорит о том, что вычисления интерактивно и параллельно могут вестись одновременно, но это не обязательно.
Основная проблема в этом варианте установке, как же установить MATLAB с MATLAB Distributed Computing Server и иметь ярлыки, ассоциации и прочие прелести настольной установки.
-
Первая установка без MATLAB Distributed Computing Server.
Сперва мы не ставим галочку «MATLAB Distributed Computing Server»:

В этот раз необходимо установить галочку «MATLAB Distributed Computing Server»:

Далее установщик спросит, перезаписать установленные компоненты MATLAB. Отвечает «No to All»:

Таким образом, будет установлен только один компонент, а именно недостающий в установке «MATLAB Distributed Computing Server»:

После копирования файлов отображаются инструкции по настройке:

И установка успешно завершена!

Дополнения к варианту 3
Эти дополнения состоят из дополнений к вариантам 1 и 2.