![]() |
Приложение
Поддержка средств Java в MATLAB 6
Язык программирования Java обычно непосредственно не используется для поддержки математических вычислений в системе MATLAB. Однако этот перспективный язык высокого уровня входит в состав ядра системы и широко применяется для создания средств интерфейса и средств Интернета. Поэтому в новых версиях MATLAB 6.0/6.1 существенно расширена поддержка средств языка Java, который приобрел важное значение для решения задач в области создания электронных и Интернет-документов.
Фактически Java интегрирован в MATLAB и используется для построения его графического интерфейса и справочной системы (наряду с HTML). Кроме того, предусмотрены работа с рядом типов данных, классов и объектов, связанных с Java, и поддержка построенной на Java виртуальной машины. Основной материал по использованию средств языка Java имеется в дополнительном руководстве «MATLAB. External Interfaces. Version 6». Для знакомства с тонкостями программирования на Java рекомендуется обращаться в Интернет-сайт www.javasoft.com, посвященный этому языку. Уточнить версию Java, установленную в системе MATLAB, на вашей компьютерной платформе можно, исполнив команду:
» version -Java ans
Java 1.1.8 from Sun Microsystems Inc.
Вы можете создавать объекты Java в MATLAB с использованием имени класса Java:
» f = java.awt.Frame('My Title')
f =
Java. awt. Frame[f rameO. 0,0, 0x0. i nval i d. hi dden. layout=java. awt. Border-Layout.
resizable.title=my title]
Методы объектов Java могут быть вызваны как с использованием синтаксиса Java, так и с использованием синтаксиса MATLAB:
» setTitle (f. 'new title' )
» t = getTitle(f)
t =
new title
Тот же пример с использованием синтаксиса Java:
» f.setTitle ('modify title' )
» t = f.getTitle
t =
modify title
»
whos f
Name
Size Bytes Class
f1x1 Java.awt.Frame
Grand total is 1 elements using 0 bytes
Как видно из этого сообщения, в MATLAB поддерживаются Java-классы и Java-объекты.
Для более полного знакомства с возможностями Java в MATLAB можно воспользоваться справочной системой. Правда, в индексном каталоге поиск разделов по имени «Java» к успеху не приводит, но в окне расширенного поиска Search можно найти ряд статей по применению Java.
В окне справки в разделе Calling Java from MATLAB можно найти целый ряд разделов справки, посвященных применению этого языка в системе MATLAB (естественно, на английском языке).
Для получения информации об объектах и методах Java, с которыми может работать MATLAB, нужно исполнить команду:
»methodsview Java.awt.Menultem
Данные окна рис. П2 показывают, что поддержка Java реализована в большом числе объектов и методов системы MATLAB.
При использовании объектов Java пользователь должен учитывать многочисленные отличия в свойствах объектов Java и объектов MATLAB, что ведет к различиям в результатах исполнения многих функций. Например, вот как работает функция определения длины строки в MATLAB:
» s= ' Hellо my friend!'
s =
Hello my friend!
» size(s)
ans =
1 16
Результат означает, что строка s задана как одномерный массив с числом элементов 16. А вот как та же функция работает со строковым массивом Java:
» string=java.lang.Sthng( 'Hello my friend!')
string=
Hello my friend!
» size(string)
ans =
1 1
Нетрудно заметить, что отдельные символы в этом случае не рассматриваются как элементы массива, и строка представлена одномерным массивом единичной длины.
» C=char(string)
С=
Hello my friend!
» [m,n]=size(C)
m =
1
n =
16
» whos С
Name Size Bytes Class
С 1x16 32 char array Grand total is 16 elements using 32 bytes
Использовав преобразование объекта класса java.lang.string в массив символов MATLAB, мы все-таки подсчитали число символов обычными средствами MATLAB. Но в среде MATLAB мы можем сделать это и средствами Java.
» string.length
ans =
16
Или
» e=java.lang.StringBuffer(string)
e =
Hello my friend!
» e.length
ans =
16
Следующий пример показывает создание Java-структуры многоугольника:
» polygon=java.awt.Polygon([14 42 98 124],[55 12 -2 62].4)
polygon =
java.awt.Pol ygon@94067b
Для выявления структуры Java объекта может использоваться функция struct (object), которая преобразует объект в структуру (массив структур) MATLAB с потерей информации о классе.
Пример: .
» struct(string)
ans =
0x0 struct array with fields:» struct(polygon)
ans =
npoints: 4
xpoints: [4x1 int32]
ypoints: [4x1 int32]
Следует отметить, что указание имени объекта с большой буквы (кстати, как это задано в определении класса) ведет к ошибке, поскольку сам объект, преобразуемый в структуру, по правилам MATLAB, где регистр имеет значение, называется
polygon:
» struct(Polygon)
??? Undefined function or variable 'Polygon'.
Эти примеры, и их можно привести множество, свидетельствуют о том, что пользователь, рискнувший применить средства Java в MATLAB на практике, должен хорошо знать как возможности языка Java, так и особенности среды и языка программирования MATLAB. И быть готовым к различным сюрпризам.
Warning: require_once(/var/www/u0033082/data/www/kokos13.ru/www.matlabsoft.ru/3d40b281efbf7e201223173b1a015a7e/sape.php): failed to open stream: No such file or directory in /var/www/u0033082/data/www/kokos13.ru/matlabsoft.ru/numend/Index1.php on line 617
Fatal error: require_once(): Failed opening required '/var/www/u0033082/data/www/kokos13.ru/www.matlabsoft.ru/3d40b281efbf7e201223173b1a015a7e/sape.php' (include_path='.:') in /var/www/u0033082/data/www/kokos13.ru/matlabsoft.ru/numend/Index1.php on line 617