Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 9.pdf
Скачиваний:
164
Добавлен:
03.08.2018
Размер:
4.03 Mб
Скачать

Обмен данными между Matlab и Excel

Запустим Excel,проверив,чтопроделанывсенеобходимые настройки так, как описано в предыдущем разделе (Matlab должен быть закрыт). Введем в ячейки с A1 по C3 матрицу, для отделения десятичных знаков используйте точку в соответствии с требованиями Excel.

Выделим на листе данные ячейки и нажмем кнопку Send data to MATLAB, появляется окно Excel с предупреждением о том, что программа Matlab не запущена и с предложением запустить ее. Нажмем Да и дождемся открытия Matlab.

19

Появляетсядиалоговоеокно Excel со строкойввода,предназначенной для определения имени переменной рабочей среды Matlab, в которую следует экспортировать данные из выделенных ячеек Excel. Введем к примеру, М и закроем окно при помощи кнопки OK.

Перейдем к командному окну Matlab и убедимся, что в рабочей среде создалась переменная М, содержащая массив три на три:

Проделаем некоторые операции в Matlab с матрицей М, например, обратим ее.

Вызов inv для обращения матрицы, как и любой другой команды

Matlab можно осуществить прямо из Excel. Нажатие на кнопку Run MATLAB command, расположенную на панели Spreadsheet Link, при-

водит к появлению диалогового окна, в строке ввода которого следует набрать команду Matlab IM=inv(M).

Результат аналогичен полученному при выполнении команды в среде

Matlab.

20

Вернемся в Excel, сделаем текущей ячейку A5 и нажмем кнопку Get data from MATLAB. Появляется диалоговое окно со строкой ввода, в ко-

торой требуется ввести имя переменной, импортируемой в Excel. В данном случае такой переменной является IM.

Нажмем OK, в ячейки с A5 по С7 введены элементы обратной мат-

рицы.

Итак, для экспорта матрицы в Matlab следует выделить подходящие ячейки листа Excel, а для импорта достаточно указать одну ячейку, которая будет являться верхним левым элементом импортируемого массива. Остальные элементы запишутся в ячейки листа согласно размерам массива, переписывая содержащиеся в них данные, поэтому следует соблюдать осторожность при импорте массивов.

Вышеописанный подход является самым простым способом обмена информацией между приложениями – исходные данные содержатся в Excel, затем экспортируются в Matlab, обрабатываются там некоторым образом и

результат импортируется в Excel. Пользователь переносит данные при помощи кнопок панели инструментов Spreadsheet Link. Информация мо-

жет быть представлена в виде матрицы, то есть прямоугольной области рабочего листа. Ячейки, расположенные в строку или столбец, экспортируются, соответственно, в вектор-строки и вектор-столбцы Matlab. Аналогично происходит и импорт вектор-строк и вектор-столбцов в Excel.

Эти же операции можно осуществить путем аналогичных дополнительных функций рабочего листа. Функция MLPutMatrix служит для по-

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

ное в кавычки, и диапазон ячеек Excel, относящихся к этой переменной. Обратную операцию осуществляет функция MLGetMatrix, при этом аргу-

ментами этой функции являются имя переменной рабочей среды MatLab с

21

данными, заключенной в кавычки, и диапазон ячеек Excel, где будут размещены данные этой переменной, также заключенный в кавычки. Обращение

из Excel к командам Matlab производится при помощи функции MLEvalString, при этом команды задаются в качестве единственного ар-

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

Рассмотрим решение предыдущего примера с использованием выше-

перечисленных функций рабочего листа. В ячейку E2 введем функцию =MLPutMatrix("M"; A1:C3), нажатие клавиши Enter приведет к вы-

полнению данной команды. Далее в ячейку E4 занесем функцию =MLEvalString("IM=inv(M)"), после выхода из ячейки будет выпол-

нено обращение матрицы M и помещение результата в матрицу IM. Нако-

нец, поместим в ячейку E6 функцию =MLGetMatrix("IM";"A5:C7"),

после выполнения данной функции в ячейках с A5 по С7 Excel будут размещены элементы обратной матрицы IM. Результаты данных операций приведены ниже:

Как видно из скриншота, при выполнении указанных функций рабочего листа MatLab в ячейках Excel E2, E4 и E6 при отсутствии ошибок отображаются нули, в противном случае в ячейке отображается информация об ошибке.

При изменении содержимого исходного массива в Excel, а также при последующих загрузках электронной таблицы автоматической ре-

калькуляции функций Matlab рабочего листа не происходит, за исключением функции MLPutMatrix. Для активизации ячеек, содержащих дан-

ные функции, следует поочередно сделать их текущими, нажать клавишу F2 редактирования и затем клавишу Enter.

22