- •Лекция 3.5 Основы программирования в MatLab. Связь MatLab с текстовым редактором Word и электроннымим таблицами Excel
- •Публикация результатов работы
- •Совместная работа Matlab и Word
- •М-книги
- •Настройка MATLAB и создание М-книги
- •Группировка ячеек
- •Пример создания М-книги
- •Управление М-книгой
- •Совместная работа Matlab и Excel
- •Чтение рабочего листа Excel в числовую матрицу Matlab
- •Чтение диапазона ячеек
- •Чтение столбца
- •Получение числовых, текстовых и необработанных данных
- •Вычисление функции на рабочем листе Excel
- •Организация пользовательского вывода
- •Обмен данными между Matlab и Excel
Обмен данными между 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