2013-05-15 6 views
1

Я написал программы Matlab, которые производят графики и таблицы для химических веществ. Я получаю свой вход в основном из таблиц excel и локальной базы данных MySql. Моя проблема заключается в нескольких названиях веществ, содержащих греческие буквы.Как перевести Unicode в и из Matlab?

Моя проблема в том, что я хочу создать графики, которые используют именно имена, указанные моими коллегами. А также создайте таблицы, которые показывают правильный символ.

Пример: Если я создаю файл excel, содержащий «α-Methylstyrol» в первой ячейке, и прочитайте его с помощью [~,~,tmp] = xlsread('test.xlsx'). tmp будет содержать '(box with question mark)-Methylstyrol'. Если я использую строку в сюжете (title(tmp)) будет показано, как: '(right arrow)-Methylstyrol'


До сих пор я пытался команды native2unicode и unicode2native на шпагат, но нет никакого эффекта. Также я попытался заменить символы, но количество символов, которые мне нужно заменить, слишком быстро растет для меня, поэтому я действительно надеюсь, что будет более систематический путь.

(Мы знаем, что есть также имена, которые не содержали бы греческие буквы - но мы стараемся придерживаться некоторых принципов, которые предпочитают эти имена.)

ответ

0

Насколько я понимаю, Matlab не поддерживает юникод красиво. Тем не менее, можно ввести греческие буквы в заголовках изображений, используя синтаксис LaTex.

title('\alpha-Methanol') 

Несмотря на то, что это не самое хорошим решение, я думаю, что это должно быть возможно заменить Юникод символы с латексными ключевыми словами.

+1

Как я уже писал, я это считал. Просто кажется, что слишком много накладных расходов только для того, чтобы иметь функцию, которую я бы назвал «стандартной» в наши дни. – bdecaf

0

Я думаю, ваша проблема в том, что xlsread даже не получает правильную греческую букву из вашего листа.
Просто дайте jexcelapi или poi Попробуйте. Обе ссылки приводят к Java-классам для импорта xls-файлов. В MATLAB вам нужно только добавить jar-файл к вашему пути через javaaddpath, а следующие шаги похожи на базовое java-кодирование.

+0

На самом деле буква верна: 'double (tmp {1})' дает '945 45 77 101 116 104 121 108 115 116 121 114 111 108' - 945 кажется правильной кодировкой: http://www.fileformat.info/ info/unicode/char/3b1/index.htm – bdecaf

+0

Привет @bdecaf - Я попытался с помощью 'MATLAB R2013a' и одного' xlsx'-листа с просто 'α-alpha' в ячейке A1. '[a, b, c] = xlsread ('C: \ Users \ ebelingb \ Desktop \ alpha.xlsx')' приводит к 'a = []', 'b = '-alpha'' и' c =' - alpha''. Вы пробовали класс java? –

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