В этом примере вы создаете 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