exponenta event banner

Сквозное развертывание функции MATLAB

Предупреждение

Возможность сборки и упаковки кода MATLAB ® из мастера функций для надстроек Excel ® будет удалена в следующей версии. Чтобы создать надстройку Excel, используйте приложение компилятор библиотеки.

Не рекомендуется начинать с R2020a

Если вы все еще находитесь в процессе разработки функции MATLAB, которая еще не готова к развертыванию, этот пример может оказаться подходящим введением в использование надстроек MATLAB Compiler™ for Excel.

Мастер функций позволяет выполнять итерационное тестирование, разработку и отладку функции MATLAB. Для этого вызовите MATLAB из панели управления мастера функций.

Разработка функции в интерактивной среде гарантирует, что она будет работать ожидаемым образом до развертывания в более масштабных приложениях. Обычно эти приложения программируются разработчиком Excel на корпоративном языке, таком как Microsoft ® Visual Basic ®.

Аналогично примеру Magic Square, пример Prototyping and Debugging разрабатывает функцию с именем mymagic, которая переносит функцию MATLAB, magic, которая вычисляет магический квадрат, функцию с одним выводом многомерной матрицы.

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

Основные задачи программиста MATLAB

ЗадачаСсылка
1. Просмотрите предварительные условия компилятора MATLAB для надстроек Excel, если это еще не сделано.Компилятор MATLAB для надстроек Microsoft Excel
2. Подготовьтесь к выполнению примера путем копирования файлов примеров.Пример копирования файлов
3. Протестируйте функцию MATLAB, которую требуется развернуть в качестве надстройки или COM-компонента.mymagic Тестирование
4. Установите мастер функций.Установка мастера функций
5. Запустите мастер функций.Запуск мастера функций
6. Выберите рабочий процесс прототипирования и отладки.Выбор рабочего процесса для прототипирования и отладки функций MATLAB
7. Определите новую функцию MATLAB, которую требуется прообразировать, добавив ее в мастер функций и установив диапазоны ввода и вывода.Новое определение функции MATLAB
8. Протестируйте функцию MATLAB, выполнив ее с помощью мастера функций.Выполнение функции из MATLAB
9. При необходимости выполните прототип и отладку функции MATLAB с помощью MATLAB и мастера функций.Прототипирование и отладка функций MATLAB
10. Создайте надстройку и COM-компонент, а также макрос с помощью мастера функций для вызова MATLAB и средства развертывания.Создание надстроек и макросов Microsoft Excel с помощью мастера функций
11. Выполните функцию из только что созданного компонента, чтобы обеспечить идентичность поведения функции при тестировании.Выполнение функции из развернутого компонента
12. Выполните макрос, созданный с помощью мастера функций.Выполнение макроса
13. Упакуйте развертываемую надстройку и макрос с помощью мастера функций для вызова MATLAB и средства развертывания.Надстройка Microsoft Excel и упаковка макросов с помощью мастера функций
14. При необходимости проверьте или измените код Microsoft Visual Basic, созданный с помощью COM-компонента. При необходимости прикрепите созданный макрос к кнопке графического интерфейса пользователя.Доступ к коду Microsoft Visual Basic (дополнительная расширенная задача)

Что может сделать для меня мастер функций?

Мастер функций позволяет передавать значения листа Microsoft Excel (Excel 2000 или более поздней версии) в скомпилированную модель MATLAB, а затем возвращать выходные данные модели в ячейку или диапазон ячеек на листе.

Мастер функций предоставляет интуитивно понятный интерфейс для листов Excel. Вам не нужны предыдущие знания о программировании Microsoft Visual Basic для приложений (VBA).

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

Примечание

Мастер функций в настоящее время не поддерживает MATLAB sparse, и complex типы данных.

Пример копирования файлов

Все примеры компилятора MATLAB находятся в matlabroot\toolbox\matlabxl\examples\. В следующей таблице приведены примеры по папкам:

Например, файлы, относящиеся к...Найти пример кода в папке...Например, документацию см....
Пример магического квадрата xlmagic Интеграция надстройки и COM-компонента с Microsoft Excel
Пример аргумента переменной длиныxlmultiРабота со входами и выходами переменной длины
Вызов скомпилированных функций MATLAB из Microsoft ExcelxlbasicВызов скомпилированных функций MATLAB из Microsoft Excel
Пример спектрального анализаxlspectralПостроение и интеграция функций спектрального анализа

mymagic Тестирование

В этом примере выполняется тестирование файла MATLAB (mymagic.m), содержащий предопределенную функцию MATLAB magic. Проверка наличия опорной структуры для сравнения с результатами функции при ее готовности к развертыванию.

  1. В MATLAB найдите mymagic.m. Расположение примеров см. в разделе Копирование файлов примеров. Содержимое файла выглядит следующим образом:

    function y = mymagic(x)
    %MYMAGIC Magic square of size x.
    %   Y = MYMAGIC(X) returns a magic square of size x.
    %   This file is used as an example for the MATLAB Compiler product.
    
    %   Copyright 2001-2012 The MathWorks, Inc.
    
    y = magic(x)
    

  2. В командной строке MATLAB введите mymagic(5). Просмотрите результат, который выглядит следующим образом:

    17 24  1  8 15
    23  5  7 14 16
     4  6 13 20 22
    10 12 19 21  3
    11 18 25  2  9

Установка мастера функций

Перед использованием мастера функций необходимо установить его как надстройку, доступную из Microsoft Excel.

После установки мастера функций появляется запись MATLAB Functions в виде доступной кнопки надстройки Microsoft Excel.

Использование Microsoft Excel 2010 или более поздних версий Excel

  1. Перейдите на вкладку Файл (File).

  2. На левой панели навигации выберите Параметры.

  3. В диалоговом окне «Параметры Excel» на левой панели навигации выберите Надстройки.

  4. В раскрывающемся списке Управление выберите Надстройки Excel и нажмите кнопку Перейти.

  5. В диалоговом окне «Надстройки» нажмите кнопку «Обзор».

  6. Перейти к matlabroot/toolbox/matlabxl/matlabxl/archи выберите FunctionWizard2007.xlam. Нажмите кнопку ОК.

  7. В диалоговом окне «Надстройки Excel» убедитесь, что выбрана запись MATLAB Compiler Function Wizard. Нажмите кнопку ОК.

Вкладка «Главная» ленты Microsoft Excel теперь должна содержать плитку мастера функций. См. вкладку «Главная» ленты Microsoft Office с установленным мастером функций.

Использование Excel 2007

  1. Запустите Microsoft Excel, если он еще не запущен.

  2. Нажмите кнопку Office () и выберите Параметры Excel.

  3. На левой панели диалогового окна «Параметры Excel» нажмите кнопку Надстройки.

  4. На правой панели диалогового окна Параметры Excel выберите Надстройки Excel в раскрывающемся списке Управление.

  5. Нажмите кнопку Go (Перейти).

  6. Нажмите кнопку Обзор. Перейти к matlabroot\toolbox\matlabxl\matlabxl\arch и выбрать FunctionWizard2007.xlam. Нажмите кнопку ОК.

  7. В диалоговом окне «Надстройки Excel» убедитесь, что выбрана запись MATLAB Compiler Function Wizard. Нажмите кнопку ОК.

Использование Excel 2003

  1. В главном меню Excel выберите Сервис > Надстройки.

  2. Если мастер функций был установлен ранее, в списке появится мастер функций компилятора MATLAB. Выберите элемент и нажмите кнопку ОК.

    Если мастер функций ранее не был установлен, нажмите кнопку Обзор и перейдите к matlabroot\toolbox\matlabxl\matlabxl папка. Выбрать FunctionWizard.xla. Нажмите кнопку ОК, чтобы продолжить.

Запуск мастера функций

Запустите мастер функций одним из следующих способов. После инициализации мастера откроется диалоговое окно «Начальная страница мастера функций».

Использование Excel 2007 или более новых версий Excel

В Microsoft Excel на ленте Microsoft Office на вкладке Главная выберите Мастер функций.

Домашняя вкладка ленты Microsoft Office с установленным мастером функций

Можно также получить доступ к мастеру функций на вкладке Файл.

  1. В главном меню Excel выберите «Файл» > «Параметры» > «Надстройки».

  2. Выберите Function Wizard (Мастер функций)

Диалоговое окно «Начальная страница мастера функций»

Выбор рабочего процесса для прототипирования и отладки функций MATLAB

После установки и запуска мастера функций выполните следующие действия.

  1. В диалоговом окне «Начальная страница мастера функций» выберите одну или несколько функций MATLAB, которые необходимо использовать в рабочей книге (требуется установка MATLAB). По умолчанию выбран параметр «Создать проект». Введите значимое имя проекта в поле «Имя проекта», например testmymagic, например.

    Совет

    Некоторые клиенты считают полезным назначить уникальное имя в качестве имени класса (по умолчанию Class1) и назначить номер версии в целях системы управления версиями.

  2. Нажмите кнопку OK. Панель управления мастера функций отображается с включенной кнопкой Add Function.

Сведения о файлах проекта

При работе с мастером функций следует учитывать следующую информацию о файлах проекта:

  • Файлы проекта, созданные мастером функций, являются теми же файлами проекта, созданными и используемыми средством развертывания (deploytool).

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

  • Если ранее компонент был построен с помощью мастера функций, мастер предложит загрузить его.

Выход из сеанса MATLAB, вызванного мастером функций

Избегайте прерывания вручную сеанса MATLAB, вызванного мастером функций. Это может помешать использованию связанных с MATLAB функций мастера из сеанса Excel. Чтобы выйти из сеанса MATLAB, перезапустите Excel.

Новое определение функции MATLAB

  1. Добавьте функцию, которую требуется развернуть, в мастер функций. Нажмите кнопку Add в области Set Up Functions панели управления мастера функций. Появится диалоговое окно Новая функция MATLAB (New MATLAB Function).

  2. Найдите функцию MATLAB. Выберите функцию и щелкните Открыть (Open).

  3. В диалоговом окне Создать функцию MATLAB (New MATLAB Function) щелкните Добавить (Add.). Появится диалоговое окно Свойства функции (Function Properties).

    Совет

    В области «Синтаксис функции» и «Справка» диалогового окна «Свойства функции» отображается первая строка текста справки (иногда называемая H1 строкой) в функции MATLAB. Отображение этих комментариев в диалоговом окне Свойства функции (Function Properties) может быть полезно при развертывании новых или незнакомых функций MATLAB для конечных пользователей.

  4. Определите свойства входных аргументов следующим образом.

    1. На вкладке Ввод (Input) щелкните Задать входные данные (Set Input Data). Входные данные для n появится диалоговое окно.

    2. Задайте диапазон или значение, выбрав соответствующую опцию и введя значение.

    3. Щелкните Готово (Done).

    Совет

    Сведения о том, как компилятор MATLAB для надстроек Excel обрабатывает пустые ячейки (или ячейки, не содержащие данных), см. в разделе Управление значениями пустых ячеек.

  5. Определите свойства выходного аргумента следующим образом.

    1. На вкладке Вывод (Output) щелкните Задать выходные данные (Set Output Data). Выходные данные для y появляется диалоговое окно, где x - имя выходной переменной, для которой определяются свойства.

      Совет

      Можно также указать MATLAB Compiler для автоматического изменения размера, транспонирования или вывода данных в формате даты (Output as date). Для этого выберите соответствующий параметр в свойствах аргумента для y диалоговое окно.

    2. Укажите диапазон. Также можно выбрать диапазон ячеек на листе Excel; диапазон будет введен в поле Диапазон.

    3. Выберите «Автоматически изменять размер», если он еще не выбран.

    4. Щелкните Готово (Done) в окне Свойства аргумента для (Argument Properties For) y диалоговое окно.

    5. Нажмите кнопку Готово (Done) в диалоговом окне Свойства функции (Function Properties). mymagic появится в списке «Активные функции» панели управления мастера функций.

Элемент управления значением пустой ячейки

Можно указать, как компилятор MATLAB обрабатывает пустые ячейки, позволяя назначать неопределенные или непредставленные ячейки (NaN, например) значения данных для них.

Чтобы указать способ обработки пустых ячеек, выполните следующие действия.

  1. Щелкните Опции (Options) в окне Входные данные (Input Data) для N диалоговое окно.

    Откроется диалоговое окно Опции преобразования ввода (Input Conversion Options).

  2. Щелкните раскрывающийся список Рассматривать отсутствующие данные как.

  3. Укажите значение Zero или NaN (не число) в зависимости от способа обработки пустых ячеек.

Работа с массивами Struct

Чтобы назначить диапазоны полям в массиве структуры, выполните следующие действия.

  1. Если это еще не сделано, выберите Это аргумент массива структуры MATLAB в поле Входные данные для n и нажмите кнопку «ОК».

    Аргумент входных данных для массива структуры n откроется диалоговое окно.

  2. Мастер функций поддерживает векторные и двумерные массивы структур, организованные в организации Element by Element или Plane, как для ввода, так и для вывода.

    В аргументе Input Data for Structure Array n выполните следующие действия:

    1. В области «Организация структурного массива» выберите «Организация по элементам» или «Организация по плоскостям».

    2. Нажмите кнопку Добавить поле, чтобы добавить поля для каждого из аргументов массива структуры. Откроется диалоговое окно Поле для аргумента структурного массива (Field for Structure Array Argument).

  3. В диалоговом окне «Поле для аргумента» выполните следующие действия.

    1. В поле Имя определите имя поля. Указанное имя должно совпадать с именем поля структурного массива в функции MATLAB.

    2. Укажите диапазон для поля.

    3. Щелкните Готово (Done).

Как поддерживаются массивы структуры.  Компилятор MATLAB поддерживает один и двухмерный массивы структуры MATLAB.

Продукт преобразует данные, передаваемые в массивы структуры в поэлементной организации или организации плоскости. Дополнительные сведения обо всех типах данных MATLAB, включая структуры, см. в разделе Основы программирования MATLAB.

Развертывание массивов структуры в качестве входов и выходов.  Если вы программист MATLAB и хотите развернуть функцию MATLAB со структурными массивами в качестве входных или выходных аргументов, создайте макросы Microsoft Excel с помощью мастера функций и передайте их (с надстройкой Excel и компонентом COM) конечным пользователям. Если это невозможно, сообщите конечным пользователям:

  • Какие аргументы являются массивами структуры

  • Имена полей массивов структуры

Использование макросов со структурными массивами.  Функция генерации макросов в компиляторе MATLAB для надстроек Excel работает с массивами структур в качестве входных или выходных аргументов. См. раздел Создание макросов, если имеется готовая к развертыванию функция MATLAB. См. раздел Надстройка Microsoft Excel и создание макросов с помощью мастера функций, если для создания функции MATLAB с нуля используется мастер функций. Дополнительные сведения об обоих рабочих процессах см. в разделе Выбор рабочего процесса развертывания функций.

Прототипирование и отладка функций MATLAB

Используйте мастер функций для интерактивного прототипа и отладки функции MATLAB.

С тех пор mymagic вызывает предварительно записанный MATLAB magic функция непосредственно не является иллюстративным примером использования функции прототипирования и отладки компилятора MATLAB.

Ниже приведен пример использования этой функции с myprimes, функция, содержащая несколько строк кода.

Создание прототипов и отладка с использованием myprimes

Например, предположим, что вы находитесь в процессе прототипирования кода, который использует уравнение P = myprimes(n). Это уравнение возвращает вектор строки простых чисел, меньших или равных n (простое число не имеет факторов, кроме 1 и самого числа).

Ваш код использует P = myprimes(n) следующим образом:

function [p] = myprimes(n)

if length(n)~=1, error('N must be a scalar'); end
if n < 2, p = zeros(1,0); return, end
p = 1:2:n;
q = length(p);
p(1) = 2;
for k = 3:2:sqrt(n)
    
  if p((k+1)/2)
     p(((k*k+1)/2):k:q) = 0;
  end
  
end

p = (p(p>0));

При разработке кода необходимо обрабатывать различные сценарии использования. Например, необходимо поэкспериментировать со сценариями, которые могут назначить значение вектора столбца выходной переменной. p ( (myprimes возвращает только вектор строки, как указано ранее). Вы следуете этому общему потоку операций:

  1. Установка точки останова в myprimes на первом if оператор, с использованием графического интерфейса пользователя или dbstopнапример.

  2. На панели управления мастера функций в области «Выполнение функций» нажмите кнопку «Выполнить». Выполнение будет остановлено в ранее установленной точке останова. Обратите внимание на значение p. Выполните пошаговую отладку кода, как обычно при использовании редактора MATLAB.

Дополнительные сведения об отладке кода MATLAB см. в разделе Отладка программы MATLAB.

Выполнение функции из MATLAB

Протестируйте развертываемую функцию MATLAB, выполнив ее в MATLAB:

  1. На панели управления мастера функций в области Execute Functions выберите Execute MATLAB Functions in MATLAB.

  2. Щелкните Выполнить (Execute). В Excel выполняется функция Magic Square, которая дает результаты, аналогичные следующим.

Создание надстроек и макросов Microsoft Excel с помощью мастера функций

Мастер функций может автоматически создавать развертываемые надстройки и макросы Microsoft Excel. Чтобы создать надстройку таким образом, используйте одну из следующих процедур.

Создание надстройки и связанного макроса Excel

Чтобы создать как развертываемую надстройку, так и связанный макрос Excel:

  1. В диалоговом окне «Панель управления мастера функций» в области «Создать компонент» выберите «Создать компонент надстройки Excel и макрос Excel».

  2. Войти mymagic в поле Имя макроса.

  3. Выберите расположение для сохранения макроса с помощью раскрывающегося списка «Сохранить макрос в».

  4. Введите краткое описание функциональных возможностей макроса в поле Описание.

  5. Щелкните Создать, чтобы создать надстройку (а также базовый COM-компонент) и связанный макрос. Появится диалоговое окно «Сборка средства развертывания», показывающее состояние надстройки и компиляции (сборки) COM-компонентов.

    Диалоговое окно «Построение»

Создание COM-компонента или макроса только без создания надстройки

Чтобы создать COM-компонент или макрос без создания надстройки Excel, выполните следующие действия.

  1. В диалоговом окне «Мастер функций» «Панель управления» в области «Создание компонента» выберите «MATLAB Excel Add-in Only» или «Create Excel Macro Only».

  2. Войти mymagic в поле Имя макроса.

  3. Выберите расположение для сохранения макроса с помощью раскрывающегося списка «Сохранить макрос в».

  4. Введите краткое описание функциональных возможностей макроса в поле Описание.

  5. Щелкните Создать (Create).

Выполнение функции из развернутого компонента

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

  1. На панели управления мастера функций в области Execute Functions выберите Execute MATLAB Functions from Deployed Component.

  2. Щелкните Выполнить (Execute). В Excel выполняется функция Magic Square, которая дает результаты, аналогичные следующим.

Выполнение макроса

Запустите макрос, созданный при создании макроса, выполнив одно из следующих действий после первого удаления ячеек A1:E5 (которые содержат выходные данные функции Magic Square, запущенной при выполнении функции).

Совет

Перед запуском макросов в Microsoft Excel может потребоваться включить соответствующие параметры безопасности. Сведения о разрешениях макросов и связанных сообщениях об ошибках см. в приложении «Ошибки и решения».

Использование Excel 2007 или более новых версий Excel

  1. В Microsoft Excel щелкните Просмотр > Макросы > Просмотр макросов.

  2. Выбрать mymagic из раскрывающегося списка Имя макроса.

  3. Щелкните Выполнить (Run). Клетки A1:E5 на листе Excel автоматически заполняются выходные данные mymagic.

Использование Excel 2003

  1. В Microsoft Excel выберите Инструменты > Макрос > Макросы.

  2. Выбрать mymagic из раскрывающегося списка Имя макроса.

  3. Щелкните Выполнить (Run). Клетки A1:E5 на листе Excel автоматически заполняются выходные данные mymagic.

Надстройка Microsoft Excel и упаковка макросов с помощью мастера функций

Мастер функций может автоматически упаковывать развертываемую надстройку Microsoft Excel и макрос для совместного использования. Чтобы упаковать надстройку таким образом, используйте одну из следующих процедур.

  1. После успешного создания компонента и надстройки в области «Общий доступ к компоненту» диалогового окна «Панель управления мастера функций» просмотрите файлы, перечисленные в поле «Файлы» для включения в упаковку. Добавьте файлы или удалите файлы из пакета, нажав соответствующие кнопки.

  2. Чтобы добавить в пакет доступ к установщику среды выполнения MATLAB, выберите один из параметров в области Среда выполнения MATLAB. Сведения о среде выполнения MATLAB и программе установки среды выполнения MATLAB см. в разделе Установка и настройка среды выполнения MATLAB.

  3. Когда вы будете готовы создать пакет, нажмите кнопку Создать пакет.

Доступ к коду Microsoft Visual Basic (дополнительная расширенная задача)

При необходимости можно получить доступ к коду Visual Basic или изменить его в зависимости от опыта программирования или наличия разработчика Excel. Если да, выполните следующие действия.

В главном окне Excel откройте редактор Microsoft Visual Basic, выполнив одно из следующих действий. выберите «Сервис» > «Макрос» > «Редактор Visual Basic».

Использование Excel 2007 или более новых версий Excel

  1. Щелкните Разработчик > Visual Basic.

  2. При открытии редактора Visual Basic в окне Проект - VBAProject дважды щелкните, чтобы развернуть VBAProject (mymagic.xls).

  3. Разверните окно Modules и дважды щелкните значок Matlab Macros модуль.

    Откроется окно Visual Basic Code с кодом для этого проекта.

Использование Excel 2003

  1. Щелкните Инструменты > Макрос > Редактор Visual Basic.

  2. При открытии редактора Visual Basic в окне Проект - VBAProject дважды щелкните, чтобы развернуть VBAProject (mymagic.xls).

  3. Разверните окно Modules и дважды щелкните значок Matlab Macros модуль.

    Откроется окно VB Code с кодом для этого проекта.

Сопоставление макроса кнопке GUI или элементу управления (необязательно)

Чтобы прикрепить макрос к кнопке графического интерфейса пользователя, выполните следующие действия:

  1. Щелкните Разработчик > Вставить.

  2. В меню «Элементы управления» выберите значок «Кнопка» (элемент управления «Форма»).

    Совет

    Наведите курсор мыши на меню «Элементы управления формы» для просмотра различных меток элементов управления.

  3. В диалоговом окне «Назначение макросов» выберите макрос, которому требуется назначить кнопку графического интерфейса пользователя, и нажмите кнопку «ОК».

Присоединение макроса к кнопке

Для получения дополнительной информации

Если хочешь...Видишь...
  • Выполнение основных задач программиста MATLAB

  • Понимание того, как продукты развертывания обрабатывают функции MATLAB

  • Понимание совместной работы продуктов развертывания

  • Ознакомьтесь с инструкциями по написанию развертываемого кода MATLAB

Запись развертываемого кода MATLAB
См. дополнительные примеры создания надстроек и COM-компонентовСоздание макросов из функций MATLAB
Подробнее о среде выполнения MATLABСведения о среде выполнения MATLAB
Узнайте, как настроить и интегрировать COM-компонент, созданный путем изменения кода Microsoft Visual BasicИнтеграция компонентов с помощью приложения Visual BasicПостроение и интеграция функций спектрального анализа