В этом примере вы создаете Java® пакет, который вызывает MATLAB® функция, чтобы изменить массив структур и реализовать приложение телефонной книги.
Функция MATLAB | makephone.m
|
Местоположение функции MATLAB |
|
Участок кода Java |
|
Скопируйте PhoneExample
папка, которая поставляется с MATLAB к вашей папке работы:
copyfile(fullfile(matlabroot,'toolbox','javabuilder','Examples','PhoneExample'),'PhoneExample')
В командной строке MATLAB перейдите к новому PhoneExample\PhoneDemoComp
подпапка в вашей папке работы.
Исследуйте makephone.m
функция.
function book = makephone(friends) book = friends; for i = 1:numel(friends) numberStr = num2str(book(i).phone); book(i).external = ['(508) 555-' numberStr]; end
Функция берет массив структур в качестве входа, изменяет его и предоставляет модифицированный массив как выход.
Создайте пакет Java с приложением Library Compiler или compiler.build.javaPackage
использование следующей информации:
Поле | Значение |
---|---|
Имя библиотеки | phonebookdemo |
ClassName | phonebook |
Файл, чтобы скомпилировать | makephone.m |
Например, если вы используете compiler.build.javaPackage
Ввод:
buildResults = compiler.build.javaPackage('makephone.m', ... 'PackageName','phonebookdemo', ... 'ClassName','phonebook');
Для получения дополнительной информации смотрите, что инструкции в Генерируют приложение Java Пакета и Сборки Java.
Запишите исходный код для приложения, это получает доступ к функциям MATLAB.
Пример приложения для этого примера находится в PhoneExample\PhoneDemoJavaApp\getphone.java
.
Программа делает следующее:
Создает массив структур, с помощью MWStructArray
представлять данные о телефонной книге в качестве примера.
Инстанцирует класса плоттера как thePhonebook
объект:
thePhonebook = new phonebook();
Вызывает makephone
метод, чтобы создать модифицированную копию структуры путем добавления дополнительного поля:
result = thePhonebook.makephone(1, friends);
Использует try-catch
блокируйтесь, чтобы отловить и обработать любые исключения.
В MATLAB перейдите к PhoneExample\PhoneDemoJavaApp
папка.
Скопируйте сгенерированный phonebookdemo.jar
пакет в эту папку.
Если вы использовали compiler.build.javaPackage
Ввод:
copyfile(fullfile('..','PhoneDemoComp','phonebookdemojavaPackage','phonebookdemo.jar'))
Если вы использовали Library Compiler, введите:
copyfile(fullfile('..','PhoneDemoComp','phonebookdemo','for_testing','phonebookdemo.jar'))
В окне командной строки, cd
к thePhoneDemoJavaApp
папка.
Скомпилируйте getphone
приложение с помощью javac
.
На Windows®Ввод:
javac -classpath "matlabroot
\toolbox\javabuilder\jar\javabuilder.jar";.\phonebookdemo.jar getphone.java
На UNIX®Ввод:
javac -classpath "matlabroot
/toolbox/javabuilder/jar/javabuilder.jar":./phonebookdemo.jar getphone.java
Замените
с путем к вашему MATLAB или папке установки MATLAB Runtime. Например, на Linux®, путем может быть matlabroot
/usr/local/MATLAB/R2021b
.
Запустите getphone
приложение.
На Windows введите:
java -classpath .;"matlabroot
\toolbox\javabuilder\jar\javabuilder.jar";.\phonebookdemo.jar getphone
На UNIX введите:
java -classpath .:"matlabroot
/toolbox/javabuilder/jar/javabuilder.jar":./phonebookdemo.jar getphone
Примечание
Если при запуске приложение на Mac 64-битная платформа, необходимо добавить -d64
отметьте в команде Java.
getphone
программа отображает следующий вывод:
Friends: 2x2 struct array with fields: name phone Result: 2x2 struct array with fields: name phone external Result record 2: Mary Smith 3912 (508) 555-3912 Entire structure: Number of Elements: 4 Dimensions: 2-by-2 Number of Fields: 3 Standard MATLAB view: 2x2 struct array with fields: name phone external Walking structure: Element 1 name: Jordan Robert phone: 3386 external: (508) 555-3386 Element 2 name: Mary Smith phone: 3912 external: (508) 555-3912 Element 3 name: Stacy Flora phone: 3238 external: (508) 555-3238 Element 4 name: Harry Alpert phone: 3077 external: (508) 555-3077
libraryCompiler
| compiler.build.javaPackage