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

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

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

Не рекомендуемый запуск в R2020a

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

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

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

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

Если ваша функция MATLAB готова к развертыванию и вы уже создали надстройку и COM- компонента с Deployment Tool, см. «Выполнение функций и Создание макросов».

Ключевые задачи для MATLAB Programmer

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

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

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

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

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

Примечание

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

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

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

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

Микмагическая проверка

В этом примере вы тестируете файл 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. На левой панели навигации выберите Options.

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

  4. В раскрывающемся списке Управление выберите Excel Add-Ins и нажмите Go.

  5. В диалоговом окне Add-Ins нажмите Browse.

  6. Поиск matlabroot/ toolbox/matlabxl/matlabxl/ arch, и выберите FunctionWizard2007.xlam. Нажмите OK.

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

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

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

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

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

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

  4. На правой панели диалогового окна Опции Excel (Excel Options) выберите Excel Add-ins из раскрывающегося списка Manage.

  5. Нажмите Go.

  6. Нажмите Browse. Переход к matlabroot\ toolbox\matlabxl\matlabxl\ arch и выберите FunctionWizard2007.xlam. Нажмите OK.

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

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

  1. Выберите Tools > Add-Ins из главного меню Excel.

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

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

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

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

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

В Microsoft Excel, на ленте Microsoft Office, на вкладке Home, выберите Function Wizard.

Вкладка «Вкладка Home» ленты Microsoft Office с установленным мастером функций

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

  1. Выберите File > Options > Add-Ins из главного меню Excel.

  2. Выберите Function Wizard.

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

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

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

  1. В диалоговом окне Начальная страница мастера функций выберите I have one or more MATLAB functions that I want to use in a workbook (MATLAB installation required). Опция New Project выбрана по умолчанию. Введите значимое имя проекта в поле Project Name, например testmymagic, для примера.

    Совет

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

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

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

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

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

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

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

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

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

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

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

  2. Найдите функцию MATLAB. Выберите функцию и нажатие кнопки Open.

  3. В диалоговом окне New MATLAB Function нажмите Add. Откроется диалоговое окно Function Properties (свойства функции).

    Совет

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

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

    1. На вкладке Input нажмите Set Input Data. Входные данные для n появится диалоговое окно.

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

    3. Нажмите Done.

    Совет

    Чтобы указать, как MATLAB Compiler для надстроек Excel обрабатывает пустые камеры (или камеры, не содержащие данных), см. Раздел «Управление значениями пустых камер».

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

    1. На вкладке Output нажмите Set Output Data. Данные Выходы для y появляется диалоговое окно, где x - имя выходной переменной, свойства которой вы определяете.

      Совет

      Можно также задать MATLAB Compiler, чтобы Auto Resize, Transpose или вывести ваши данные в формате даты (Output as date). Для этого выберите соответствующую опцию в Argument Properties For y диалоговое окно.

    2. Задайте Range. Кроме того, выберите область значений камер на листе Excel; область значений будет вводима для вас в поле Range.

    3. Выберите Auto Resize, если он еще не выбран.

    4. Щелкните Done в разделе «Свойства аргумента для» y диалоговое окно.

    5. Нажмите Done в диалоговом окне «Свойств функции». mymagic теперь отображается в списке Active Functions панели управления мастера функций.

Управление значениями пустых камер

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

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

  1. Щелкните Options в окне "Входные данные для N диалоговое окно.

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

  2. Щелкните раскрывающийся список Treat Missing Data As.

  3. Задайте Zero или NaN (Not a Number), в зависимости от того, как вы хотите обрабатывать пустые камеры.

Работа со массивами структур

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

  1. Если вы еще не сделали этого, выберите This is a MATLAB structure array argument в входных данных для n и нажмите кнопку OK.

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

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

    В аргументе входных данных для массива структур n выполните следующие действия:

    1. В области Организация массива структур выберите Element by Element Organization или Plane Organization.

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

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

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

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

    3. Нажмите Done.

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

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

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

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

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

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

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

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

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

Ниже приведен пример использования этой функции с 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. На панели управления Function Wizard, в области Execute Functions, нажмите Execute. Выполнение остановится в ранее установленной точке останова. Обратите внимание на значение p. Пошаговый и отлаживайте ваш код, так как вы обычно использовали бы MATLAB Editor.

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

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

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

  1. На панели управления Function Wizard, в области Execute Functions, выберите Execute MATLAB Functions in MATLAB.

  2. Нажмите Execute. В Excel функция Магический квадрат выполняется, получая результаты, аналогичные следующим.

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

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

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

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

  1. В диалоговом окне Function Wizard Control Панели, в области Create Component, выберите Create Both Excel Add-in Component and Excel Macro.

  2. Введите mymagic в поле Macro Name.

  3. Выберите место хранения макроса с помощью раскрывающегося списка Store Macro In.

  4. Введите краткое описание функциональности макроса в поле Description.

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

    Диалоговое окно сборки

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

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

  1. В диалоговом окне Function Wizard Панель, в области Create Component, выберите MATLAB Excel Add-in Component Only или Create Excel Macro Only.

  2. Введите mymagic в поле Macro Name.

  3. Выберите место хранения макроса с помощью раскрывающегося списка Store Macro In.

  4. Введите краткое описание функциональности макроса в поле Description.

  5. Нажмите Create.

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

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

  1. На панели управления Function Wizard, в области Execute Functions, выберите Execute MATLAB Functions from Deployed Component.

  2. Нажмите Execute. В Excel функция Магический квадрат выполняется, получая результаты, аналогичные следующим.

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

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

Совет

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

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

  1. В Microsoft Excel щелкните View > Macros > View Macros.

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

  3. Нажмите Run. Камеры A1:E5 на листе Excel автоматически заполняются выходные данные mymagic.

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

  1. В Microsoft Excel щелкните Tools > Macro > Macros.

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

  3. Нажмите Run. Камеры A1:E5 на листе Excel автоматически заполняются выходные данные mymagic.

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

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

  1. После успешного создания компонента и надстройки в области «Совместное использование компонента» диалогового окна панели управления мастера функций проверьте файлы, перечисленные в поле Files to include in packaging. Add File s или Remove File s в пакет или из него нажав соответствующие кнопки.

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

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

Microsoft Visual Basic Code Access (необязательная расширенная задача)

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

В главном окне Excel откройте редактор Microsoft Visual Basic, выполнив одно из следующих действий. выберите Tools > Macro > Visual Basic Editor.

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

  1. Нажмите Developer > Visual Basic.

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

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

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

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

  1. Нажмите Tools > Macro > Visual Basic Editor.

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

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

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

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

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

  1. Нажмите Developer > Insert.

  2. В Form Controls меню выберите значок Button (Form Control).

    Совет

    Наведите указатель мыши на меню Form Controls, чтобы увидеть различные метки управления.

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

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

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

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

  • Осмыслите, как продукты развертывания обрабатывают ваши функции MATLAB

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

  • Исследуйте рекомендации по записи развертываемого кода MATLAB

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