Переезд Matlab из Windows в Linux

    Matlab прекрасно чувствует себя в Linux, поскольку этот крутой продукт есть для Linux. При переносе разработки в Linux из Windows следует учесть следующие моменты:

     

    1. Кодировка текстов программ (файлов .m) в Windows - cp1251, а в Linux - utf-8.
      После копирования файлов в Linux необходимо конвертировать их содержимое в соответствующую кодировку. Для этого удобно использовать программу iconv:
      iconv -f cp1251 myfunction.m -t utf-8  >myfunction.m.utf8
      mv -f myfunction.m.utf8 myfunction.m

      Примечание: если надо перенести файлы из Linux в Windows, то поменяйте в командной строке направление перекодировки.

      Для массовой перекодировки лучше всего воспользоваться программой на shell:
      for i in *.m
      do
         iconv -f  cp1251 $i  -t  utf-8  >tmp.utf8
        
      mv  -f  tmp.utf8 
      $i
      done

       
    2. Если в матлабовской программе прямо указывались пути к файлам, то:
      - вместо имени диска E: пишите каталог, где у вас теперь лежат файлы, например: /data/...
      - вместо обратного виндового слеша '\' пишите '/'
      Пример:
      файл в Windows назывался E:\collection\2009-06-02\test.dat
      В Linux будет:        /mnt/windata/collection/2009-06-02/test.dat

      Важное замечание:
      Чтобы из-за разного написания слешей вам не приходилось переписывать программы,
      используйте стандартное решение Matlab - функцию filesep. Например:

      Программый код в Windows:
      mydir = ['data' filesep 'Jul' filesep 'week2']
      В результате переменная mydir примет значение data\Jul\week2

      Та же строка программы в Unix/Linux:
      mydir = ['data' filesep 'Jul' filesep 'week2']
      В результате переменная mydir примет значение data/Jul/week2

      Если ваша программа в Windows использовала номера символов в строке и разбираемая строка была типа C:\mydata\myfile\... , то в Linux проще всего положить файлы в каталог с названием /C . Тогда длина имени в символах сохранится. Пример:
      Windows : C:\mydata\myfile.mpg
      В    Linux : /C/mydata/myfile.mpg

    3. Печать кода программы на принтере из Matlab в той версии, что я видел (7.7.0.471), содержит ошибку в JRE, что включена в состав Matlab. Вместо окна выбора принтера вы получаете Java Exception на экране. Лечится просто - надо подменить JRE на свежую версию. Я поменял на 1.6.0_12 и проблема решилась. Для этого перепишите каталог jre из вашего JDK или JRE вместо каталога MATDIR/sys/java/jre/glnx86/jre, где MATDIR - это каталог, куда вы установили сам MATLAB.
       
    4. Работа в многоэкранном(TwinView, Xinerama) режиме (2 монитора) может вызвать исключение, связанное с графическим устройством (напримем, при масштабировании графиков). Также без TwinView Matlab просто отказывался запускаться на втором экране. Лечится так же, как и в предыдущем пункте - заменой JRE.
       
    5. При редактировании графиков в подписях-надписях надо менять шрифт с Helvetica на Arial или любой другой юникодный, чтобы они отображались русским текстом. Достаточно ткнуть в надпись и подправить шрифт.

     

    Некоторые приколы:

    В версии Matlab R2001b пришлось делать следующее:

    1. В Alt Linux 6.0 установить пакет lsb. Иначе не работает License Manager.

    2. Установить пакет libXp. Иначе Матлаб осыпается без намёка даже где.

    3. Отключить OpenGl. Переименовываю файл R2011b/bin/glnx86/glren.so во что-то не .so. (Баг описан самими разработчиками).