Создайте макросы из функций MATLAB с несколькими аргументами

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

Необходимые условия

  • Проверьте, что вы соответствовали всему MATLAB® Compiler™ Excel® целевые требования. Для получения дополнительной информации смотрите MATLAB Compiler для Дополнительных Необходимых условий Microsoft Excel.

  • Проверьте, что у вас есть Microsoft® Excel установлен.

  • Укажите mwcomutil.dll на целевой машине.

    В системном командном окне перейдите к matlabroot\bin\win64(matlabroot представляет местоположение MATLAB или MATLAB Runtime в вашей системе), и запустите следующую команду:

    mwregsvr mwcomutil.dll

  • У конечных пользователей должна быть установка MATLAB Runtime, чтобы запустить дополнение. Для получения дополнительной информации смотрите Установку и Сконфигурируйте MATLAB Runtime (MATLAB Compiler SDK).

    Для тестирования можно использовать установку MATLAB вместо MATLAB Runtime.

Процедура

  1. Скопируйте xlmulti папка в качестве примера, которая поставляется с MATLAB к вашей папке работы:

    copyfile(fullfile(matlabroot,'toolbox','matlabxl','examples','xlmulti'),'xlmulti')

    В командной строке MATLAB перейдите к новому xlmulti папка в вашей папке работы.

  2. Исследуйте myplot, myprimes, и mysum функции.

    myplot берет один целочисленный вход и строит график от 1 до того номера.

    function myplot(x)
    plot(1:x)

    myprimes берет один целочисленный вход n и возвращает все простые числа, меньше чем или равные n.

    function p = primes(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);

    mysum берет вход varargin из типа integer, добавляют все числа и возвращают результат.

    function y = mysum(varargin)
    y = sum([varargin{:}])

    Файл Microsoft Excel xlmulti.xls демонстрирует эти функции несколькими способами.

  3. Создайте дополнение Excel с приложением Library Compiler или compiler.build.excelAddIn использование следующей информации:

    Поле Значение
    Имя библиотекиxlmulti
    ClassName xlmulticlass
    Файлы, чтобы скомпилироватьmyplot.m
    myprimes.m
    mysum.m

    Например, если вы используете compiler.build.excelAddInВвод:

    buildResults = compiler.build.excelAddIn(["myplot.m","myprimes.m","mysum.m"], ...
        'AddInName','xlmulti', ...
        'ClassName','xlmulticlass', ...
        'GenerateVisualBasicFile','on');

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

  4. Запустите Microsoft Excel в своей системе.

  5. Откройте файл xlmulti.xls.

    Пример появляется как показано:

    Примечание

    Если подсказка Excel говорит, что этот файл содержит макросы, нажмите Enable Macros, чтобы запустить этот пример.

  6. Вызывать функциональный myplot со значением 4, сделайте A7 (=myplot(4)) активная ячейка. Нажмите F2 и затем Войдите.

    Эта процедура строит график от 1 до 4 в Графическом окне MATLAB. Этой диаграммой можно управлять так же к способу, которым можно было бы управлять фигурой в MATLAB. Некоторая функциональность, такая как способность изменить стиль линии или окрасить, не доступна.

    Ячейка вызова содержит 0, потому что функция не возвращает значение.

  7. Следующий рисунок вызывает функциональный mysum четырьмя различными способами:

    • Первое (ячейка A14) принимает значения 1 - 10, добавляет их и возвращает результат 55 (=mysum(1,2,3,4,5,6,7,8,9,10)).

    • Второе (ячейка A19) берет объект области значений, который является областью значений ячеек со значениями 1 - 10, добавляет их и возвращает результат 55 (=mysum(B19:K19)).

    • Третье (ячейка A24) берет несколько объектов области значений, добавляет их и возвращает результат 120 (=mysum(B24:K24,B25:L25,B26:D26)). Этот рисунок демонстрирует, что области значений не должны быть одного размера и что всем ячейкам не нужно значение.

    • Четвертое (ячейка A30) берет комбинацию объекта области значений и явным образом объявленных стоимостей, добавляет их и возвращает результат 16 (=mysum(10,B30:D30)).

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

  8. На следующем рисунке, макро-myprimes вызывает функциональный myprimes.m с начальным значением 10 в ячейке A42. Функция возвращает все простые числа меньше чем 10 в ячейки B42 через E42.

    Выполнить макрос, из основного окна Excel (не Visual Basic® Редактор), открытый диалоговое окно Macro путем нажатия клавиш Alt и F8 одновременно, или путем выбора Tools> Macro> Macros.

  9. Выберите myprimes из списка и нажимают Run.

    Эта функция автоматически изменяет размер, если возвращенный выходной параметр больше, чем выходной указанный диапазон. Измените значение в ячейке A42 к номеру, больше, чем 10. Затем повторно выполните макрос. Выход возвращает все простые числа меньше, чем номер, который вы ввели в ячейке A42.

Смотрите код Microsoft Visual Basic (Необязательно)

  1. От вкладки Developer нажмите Visual Basic или нажмите ALT +F11, чтобы открыть Visual Basic Editor. В более старых версиях Excel это может быть расположено под Tools> Macro> Visual Basic Editor.

  2. В окне Project - VBAProject дважды кликните, чтобы расширить VBAProject (xlmulti.xls).

  3. Расширьте Modules папка и дважды кликает Module1 модуль. Это открывает окно VB Code с кодом для этого проекта.

Смотрите также

(MATLAB Compiler SDK) | | (MATLAB Compiler SDK)

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте