Реклама:
Смоленцев H. К. Создание Windows-приложений с использованием математических процедур MATLAB.

Рис. 4.1.9. Результат выполнения функции

Найдем определитель полученного магического квадрата. Для этого активизируем функцию с^х1 и в качестве матрицы ввода назначим полученный магический квадрат А2:Э5. Для вывода возьмем ячейку Е1.

Найдем также собственные числа полученного магического квадрата. Для этого активизируем функцию eigx1 и в качестве матрицы ввода назначим полученный магический квадрат. Для вывода возьмем столбец Е2:Е5. Получаем следующий результат (рис. 4.1.10)

Смоленцев H. К. Создание Windows-приложений с использованием математических процедур MATLAB.

Рис. 4.1.10. Результат выполнения нескольких функции

Отметим, что вывод одной функции (mymagic) может быть входом других функций (detxl, eigxl). При изменении аргумента A1 первой функции (mymagic) меняется ее выходные данные A2:D5 и, соответственно, меняются выходные данные F1:F5 следующих функций (detxl, eigxl). Это означает, что на листе Excel можно составлять композиции функций. Заметим также, что выходные значения - это обычные числовые данные Excel, они не являются связанными с входными данными в обычном смысле Excel. Выходные значения допускают редактирование, копирование и все остальные операции Excel.

Таким образом, мы видим, что практически любая функция MATLAB, или написанный на m-языке алгоритм может быть легко скомпилирован и выполнен из Excel, не вызывая среду MATLAB. Столь же просто компилируются и функции MATLAB построения графиков. А интеграция созданных функций с возможностями среды Excel показывает потрясающую эффективность пакета Excel Builder.

4.2. Общие вопросы создания компонент Excel Builder

Каждый компонент Excel Builder создается как автономный COM-объект. Каждая функция MATLAB, включенная в данный компонент является методом созданного COM-класса. При работе компонента синтаксис VBA систематически преобразуется в синтаксис MATLAB для выполнения функций MATLAB.

Процесс создания компонента Excel Builder является полностью автоматическим с точки зрения пользователя. Достаточно определить список m-файлов для обработки и некоторую дополнительную информацию, такую как имя компонента, имена классов, и номера версии. Процесс построения компонента включает: генерацию кода, создание описания интерфейса, компиляцию C++, компоновку и связывание ресурсов, регистрацию компонента.

4.2.1. Процедура создания компонента

Рассмотрим подробнее эти этапы построения компонента.

Генерация кода. Первый шаг в процессе построения генерирует все исходные коды и другие файлы, необходимые для создания компонента (пусть он имеет имя mycomponent). Создается главный исходный файл mycomponent_dll.cpp, содержащий описание процедур инициализации MCR, WINAPI DllMain и регистрации компонента. Компилятор дополнительно производит IDL-файл mycomponent_idl.idl языка описания интерфейса (Interface Definition Language), содержащий спецификации для библиотеки компонента, интерфейса и класса с соответствующим GUID (GUID - глобально уникальный идентификатор, присваиваемый объекту регистрации в системном реестре Windows, это - 128-битовое целое число гарантированно уникальное).

Затем создаются C++ файлы описания класса и выполнения myclass_com.hpp и myclass_com.cpp, содержащие описание каждой экспортируемой функции. В дополнение к этим исходным файлам, компилятор генерирует файл экспорта DLL mycomponent.def, описание ресурсов mycomponent.rc, и технологический файл компонента mycomponent.ctf.


⇐ Предыдущая страница| |Следующая страница ⇒