84800

Проверка алгоритма и визуализация данных приложения С++ с использованием команд MatLab

Курсовая

Информатика, кибернетика и программирование

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

Русский

2015-03-22

143.5 KB

5 чел.

КУРСОВАЯ РАБОТА

по дисциплине «Программирование»

на тему: «Проверка алгоритма и визуализация данных приложения С++ с использованием команд MatLab».

Выполнила:

студентка группы М-32

Травина Елена Владимировна

Проверила:

Васильева Ирина Ивановна


Содержание

[1] Введение

[2] 1.Взаимодействие VC++ и Matlab

[3] 2.Библиотеки Matlab для математических вычислений и представления графических данных

[4] 3. Методы вызова функций Matlab из среды VC++.

[5] 4.Практическая часть

[6] Список используемой литературы


Введение

MATLAB- это высокоуровневый язык и интерактивная среда для программирования, численных расчетов и визуализации результатов. С помощью MATLAB можно анализировать данные, разрабатывать алгоритмы, создавать модели и приложения. Язык, инструментарий и встроенные математические функции позволяют вам исследовать различные подходы и получать решение быстрее, чем с использованием электронных таблиц или традиционных языков программирования, таких как C/C++ или Java. MATLAB широко используется в таких областях, как обработка сигналов и связь, обработка изображений и видео, системы управления, автоматизация тестирования и измерений, финансовый инжениринг, вычислительная биология и т.п. Более миллиона инженеров и ученых по всем миру используют MATLAB в качестве языка технических вычислений.

Анализ данных

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

Визуализация данных

MATLAB предоставляет набор встроенных функций построения 2D- и 3D-графиков, а также функции объемной визуализации. Эти функции можно использовать для визуализации и как средство представления обрабатываемой информации. Графики могут быть созданы как интерактивно, так и программно. В галерее графиков MATLAB есть примеры множества способов графического представления данных.


1.Взаимодействие VC++ и Matlab

Для решения любой задачи управления реальными объектами необходим драйвер, обеспечивающий взаимодействие аппаратных и программных средств. Однако найти драйвер, подходящий для сбора информации и управления в реальном времени, чрезвычайно трудно. Очень часто пользователям бывает необходимо получать данные от систем реального времени, используя программы, написанные на C или VC++, и преобразовывать их в формат, пригодный для обработки в среде Matlab. В таких случаях приходится отказываться от режима реального времени, что создает очень большие неудобства. В управляющих системах часто возникает задача обработки матриц, которые формируются на основе данных, полученных в результате измерений. Организовать обработку матриц в среде C или VC++ достаточно трудно. Данные можно преобразовать в формат, пригодный для обработки в Matlab, однако при отсутствии интерфейса между программами не удается осуществлять обработку в реальном времени. Используя средства взаимодействия VC++ и Matlab, можно реализовать сложные алгоритмы обработки данных в системах реального времени. Посредством программ, написанных на C или VC++, легко реализовать низкоуровневое взаимодействие с аппаратными средствами. Эти программы могут использоваться для передачи команд устройствам и обмена данными с ними. При получении данных программы, написанные на C или VC++, могут обращаться к инструментальным средствам Matlab, которые, в свою очередь, выполнят необходимую обработку данных. Результаты обработки можно снова передать программе на C или VC++, которая использует их для управления объектом.

Еще одним преимуществом системы, включающей средства VC++ и Matlab, является возможность представления данных в разных форматах. В управляющих и измерительных системах часто бывает необходимо составлять различные графики. Matlab- удобный инструмент для визуализации данных. Он обеспечивает создание графиков 1D, 2D и 3D. Реализовать трехмерную графику средствами C или VC++ чрезвычайно трудно. Интерфейс между VC++ и Matlab позволяет существенно повысить уровень систем сбора и анализа данных. При этом становится возможным решать сложные задачи обработки в реальном времени.

2.Библиотеки Matlab для математических вычислений и представления графических данных

При создании приложений средствами объектно-ориентированного программирования приходится уделять большое внимание получению данных и генерации управляющих сигналов в реальном времени. Обеспечить отклик в реальном времени тем труднее, чем быстрее изменяется состояние объектов. При тестировании важно не только получение данных и генерация отклика, часто приходится строить в реальном времени различные графики. Matlab предоставляет мощные средства для обработки графической информации.

Обращаясь к функциям Matlab, можно относительно просто выполнять сложные математические расчеты и строить графики. Разработчик, пытающийся решить задачу представления графики с VC++, вынужден самостоятельно реализовывать сложные алгоритмы. Преодолеть трудности можно, используя интерфейс между Matlab и VC++, т.е. применяя для создания независимого приложения средства Matlab Compiler, C/C++ Math Library и C/C++ Graphic Library.

Среда разработки Matlab

Для создания независимого приложения можно использовать следующие средства.

  •  Matlab Compiler 2.1 (или более новую версию);
  •  Matlab C/C++ Math Library;
  •  Matlab C/C++ Graphic Library.

Matlab Compiler является основным инструментом разработки независимых приложений. Он выступает в роли инструмента, позволяющего преобразовывать файл M-кода в исходный код C или C++. Matlab C/C++ Math Library и Matlab C/C++ Graphic Library представляют собой динамически связываемые библиотеки. Они предоставляют разработчику встроенные математические и графические функции Matlab. Если в приложении не выполняются математические расчеты и не используются графические функции, необходимости в данных библиотеках нет.

После установки Matlab Compiler, Matlab C/C++ Math Library и Matlab C/C++ Graphic Library необходимо настроить среду разработки, используя для этой цели команду Задать данную команду можно в ответ на приглашение Matlab;  также можно сделать это в окне DOS. При вызове команды mbuild выполняются следующие действия. Программа mbuild определяет местонахождение компилятора ANSI C или C++ и копирует данные о его расположении в каталог, содержащий профили пользователя. Впоследствии, когда Matlab Compiler обращается к mbuild для вызова компилятора C и C++, записанные данные используются для его поиска. Программа mbuild определяет расположение библиотек, которые могут использоваться для создания приложения. В качестве примера таких библиотек можно привести Matlab C/C++ Math Library, Matlab C/C++ Graphic Library, а также библиотеку ANSI C или C++. (Основные этапы разработки независимого приложения показаны на рис. 1.).

1.Matlab Compiler вызывается для преобразования M-кода в исходный код C или C++;

2.Matlab Compiler вызывает компилятор C или C++, используя данные о его расположении;

3.Компилятор C/C++ преобразует исходный текст программ в объектный код;

4.По окончании преобразования кода компилятор C/C++ вызывает редактор связей;

5.Редактор связей выполняет компоновку, подключая к объектному коду необходимые библиотеки, например Matlab C/C++ Math Library, Matlab C/C++ Graphic Library и библиотеку C++, и генерирует исполняемый файл приложения.

Рис. 1. Основные этапы создания независимого приложения

Matlab Compiler генерирует не только исходные тексты C/C++, но и файлы оболочки, содержащие необходимые компоненты независимого приложения, например функцию main().

Независимое приложение может быть запущено либо в окне DOS, либо в командном окне Matlab. Для запуска приложения в командном окне Matlab необходимо указать перед именем исполняемого файла символ «!». Запуская приложение в окне DOS, необходимо убедиться, что все библиотеки, используемые при выполнении программы, находятся в одном из тех каталогов, в которых система автоматически осуществляет поиск файлов.

3. Методы вызова функций Matlab из среды VC++.

Метод I

Вызов из программы на VC++ независимого приложения (файла.exe ), скомпилированного с помощью Matlab Compiler 2.1.

Метод II

Использование стратегии Matlab AddIn для встраивания функций Matlab в программную среду VC++. В среде VC++ функции Matlab могут быть модифицированы.

Метод III

Использование Matlab Engine. Данный метод эквивалентен методу ActiveX.

Метод IV

Создание функций Matlab в виде разделяемой библиотеки DLL, к которой может осуществляться обращение из программной среды VC++. При использовании любого из этих методов необходимы Matlab Compiler, Matlab C/C++ Math Library и C/C++ Graphic Library.

Библиотека Math Library, предоставляемая Matlab, является набором инструментов для математических вычислений, включающих функции общего назначения, средства для решения задач линейной и нелинейной алгебры, выполнения действий над матрицами, массивами и строками, а также инструменты дискретной математики и символьных операций. Все функции написаны на языке C. Данная библиотека используется в качестве интерфейса к соответствующим средствам Matlab.

Библиотека Graphics Library применяется для реализации графических средств, например построения графиков 1D, 2D и 3D. Указанные библиотеки необходимы для организации эффективного взаимодействия программ C/C++ с Matlab.

Основным компонентом, обеспечивающим интерфейс между VC и Matlab, является Matlab Compiler- инструмент для преобразования программ и функций, написанных в формате Matlab (M-файлы или M-функции), в формат C или VC++.

Вызов независимого приложения

Компилятор Matlab Compiler 2.1 преобразует M-функции в независимое приложение (файл .exe), после чего это приложение вызывается из среды VC++. Подобному преобразованию можно подвергнуть любую M-функцию или набор функций, после чего файл приложения можно выполнить, не устанавливая библиотеки Matlab. Более того, Matlab Compiler создает исходный код C/C++ и соответствующие файлы заголовков. Это означает, что почти все M-функции, предназначенные для выполнения в среде Matlab, могут быть преобразованы в функции C/C++, пригодные для использования в среде VC++ (исключением являются функции Matlab Graphic; их нельзя непосредственно вызвать из среды VC++).

Строго говоря, из программы на VC++ можно вызвать любые функции, предназначенные для математических вычислений, например средства решения нелинейных уравнений или выполнения операций над матрицами. Графические операции представляют собой отдельный набор возможностей, предоставляемых Matlab. С их помощью можно создавать сложные графики 1D, 2D и 3D.

Стандартный способ использования графических функций Matlab предполагает компиляцию M-функций, созданных в среде Matlab, и преобразование их в независимое приложение с использованием Matlab
Compiler 2.1. Полученный исполняемый файл можно вызвать из программы на VC++ для создания графиков в реальном времени.

Листинг 1. M-функция

% Описание: функция для отображения данных

%           в реальном масштабе времени

% Входные данные:  отсутствуют

% Выходные данные:  отсутствуют

% Дата: 6/12/2014

% Имя функции: dataplot()

% Определение функции

function dataplot()

m = 1;

n = 10;

fid = fopen(  'C:\data\mdata.txt    ', ' r ');

[s] = fscanf(fid, '   %f ', [m, n])

plot( s);

grid

xlabel(' Time ');

title('Testing Program for Plotting a Response    ');

ylabel(' Response ');

Листинг 2. Содержимое файла MatlabPlot.cpp

Файл: MatlabPlot.cpp

Описание: построение графика с помощью C-функции, созданной на базе Matlab.

#include <windows.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

PROCESS_INFORMATION proInfo ;

STARTUPINFO  startInfo ;

double data_array[] = {1.2, 2.3, 3.4, 8.1, 7.3, 3.3, 2.1, 10.05, 5.88,5.77 };

// Имитация реальных данных

FILE*  fp;

void main()

{   int   i;

  DWORD ErrCode;

  char currDri[] = " C:\\Vc  ";

  char  mod[] = "C:\\MATLAB6p1\\work\\dataplot.exe   "; // Путь к файлу

  fp = fopen(" C:\\data\\mdata.txt", "w" ); // Получение дескриптора файла

     for (i=0; i<=10; i++)

     fprintf(fp, " %f ", data_array[i]);    // Запись в файл

  fclose( fp);

            // Подготовка к созданию процесса

  startInfo.cb = sizeof(STARTUPINFO);

  startInfo.cbReserved2 = 0;

  startInfo.dwFillAttribute = BACKGROUND_GREEN;

  startInfo.lpTitle = NULL;

  startInfo.dwX = CW_USEDEFAULT;

  startInfo.dwY = CW_USEDEFAULT;

  startInfo.dwXSize = CW_USEDEFAULT;

  startInfo.dwYSize = CW_USEDEFAULT;

  startInfo.dwXCountChars = 0;

  startInfo.dwYCountChars = 0;

  startInfo.lpReserved 2 = NULL;

  startInfo.lpReserved = NULL;

  startInfo.lpDesktop = NULL;

  startInfo.dwFlags = STARTF_USEFILLATTRIBUTE;

  // Создание процесса

  ErrCode =

     CreateProcess( mod,NULL,NULL,NULL,FALSE,0,NULL,

                    currDri ,&startInfo ,&proInfo );

  if (!ErrCode)

  {      ErrCode = GetLastError();

     printf("CreateProcess is failed & ErrCode = %x\n   ",

        ErrCode);

  }

  return;}

Использование Matlab AddIn

Для встраивания функций Matlab в программную среду VC++ используется Matlab AddIn. В среде VC++ функции Matlab могут быть модифицированы. Средства Matlab AddIn for Visual Studio автоматизируют задачу включения кода Matlab в программы на Visual C++. В проекте на Visual C++ устанавливаются пути к библиотекам и файлам заголовков, определяются необходимые константы и задаются библиотеки, необходимые для использования совместно с скомпилированными M-файлами. В результате работа над проектами упрощается. Matlab AddIn использует команды MCC и MEX, исключая необходимость вызова их вручную.

Matlab AddIn представляет собой мощный инструмент, который может применяться разработчиками. Создание приложений, включающих средства Matlab и C/C++, существенно упрощается за счет интеграции Matlab с Visual C++. Благодаря использованию Matlab AddIn for Visual Studio пользователь получает следующие возможности:

  •  включать M-файлы в существующие проекты Visual C++;
  •  создавать на базе M-файлов независимые приложения C или C++;
  •  создавать файлы CMEX или MMEX;
  •  создавать на базе M-файлов разделяемые библиотеки или MEX-файлы;
  •  повторно использовать M-файлы в приложениях на C/C++;
  •  непосредственно отлаживать исходные коды M-файлов. Альтернативой данному решению является отладка файлов C/C++, сгенерированных с помощью компилятора;
  •  автоматизировать процесс редактирования M-файлов и компиляции их в файлы на C/C++. Редактирование и компиляция осуществляются в среде Visual C++;
  •  проверять в процессе отладки данные, содержащиеся в составе матриц. (Visual Matrix Viewer);
  •  оформлять готовые программы в виде дистрибутивных пакетов.

Метод Matlab Engine

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

В системе Unix библиотека взаимодействует с Matlab с помощью механизма каналов. По мере необходимости используются средства удаленного вызова. В Microsoft Windows взаимодействие с Matlab происходит посредством ActiveX.

При использовании библиотеки Matlab Engine интерфейс между VC++ и Matlab существенно упрощается. Подобно управляющим элементам ActiveX, после обращения к среде Matlab и выполнения некоторых действий VC++ сохраняет контроль над выполнением программ. Еще одно преимущество использования библиотеки Matlab Engine состоит в том, что при этом нет необходимости хранить данные в файле в среде VC++ и извлекать их, открывая файл в среде Matlab. Вместо этого вы можете сформировать данные в программе VC++ и вызывать M-функции, передавая им информацию в виде массивов.

Оформление функций Matlab в виде DLL

Функция Matlab создается в виде разделяемой библиотеки DLL, к которой осуществляется обращение из программной среды VC++.

4.Практическая часть

Создание автономного приложения и библиотеки

Автономные приложения запускаются без помощи интерпретатора MATLAB и даже если MATLAB не установлен на системе. Однако автономные приложения требуют наличия во время выполнения математических библиотек MATLAB. Рассмотрены различия между MEX-файлами и автономными приложениями, создание C/C++-автономных приложений, распространение автономных приложений, создание общедоступных библиотек.

Подготовка к выполнению задачи

Для создания автономного C/С++-приложения на системе должны быть установлены:

  •  MATLAB,
  •  Компилятор MATLAB,
  •  C/С++ компилятор,
  •  Математическая библиотека MATLAB C/C++.

Исходный текст для автономной C/С++-программы состоит либо полностью из m-файлов, либо из некоторой комбинации m-файлов, MEX-файлов и файлов исходного текста на C или C++.

Компилятор MATLAB преобразовывает входные m-файлы в исходный C/С++-код. После компилирования этого исходного С/C++-кода, полученные в результате объектные файлы связываются с Математической библиотекой

MATLAB C/C++.

На обеих операционных системах Windows и UNIX для создания автономного C и C++-приложения необходимо проверить, что mbuild может создавать автономные приложения и что Компилятор MATLAB может связать объектные файлы с подходящими библиотеками для образования автономного приложения.

Для облегчения процесса настройки и создания приложения MathWorks предоставляет bat-файл mbuild. Чтобы выбрать C или C++-компилятор и сделать его установленным по умолчанию, используется команда mbuild -setup. Другое использование опции setup- для изменения параметров настройки файла опций.

Создание автономного приложения

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

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

mcc -m mymfile

Для трансляции М-файла, например mymfile.m, в C++ и создания автономной программы, которая может выполняться без MATLAB, используется команда:

mcc -p mymfile

Рассмотрим простое приложение, исходный текст которого состоит из двух m-файлов, mrank.m и main.m. Этот пример предполагает C-код программы (для C++-кода программы используется аналогичный подход).

В данном примере функция mrank.m вычисляет вектор r целых чисел- это ранги матриц магических квадратов, например r(3) есть ранг магического квадрата 3×3. Важно, что строка r = zeros(n, 1) распределяет память, чтобы помочь работе Компилятора.

function r = mrank(n)

r = zeros(n,1);

for k = 1:n

r(k) = rank(magic(k));

end

Функция main.m содержит основную "main"-процедуру, которая вызывает mrank и затем печатает результат:

function main

r = mrank(5)

Чтобы откомпилировать это только в код программы, который может быть встроен в автономное приложение, вызываем Компилятор MATLAB:

mcc -mc main mrank

Флажок опции -m заставляет Компилятор MATLAB создавать C-исходные тексты для автономных приложений, а флаг-c указывает, что нужно создать только С-код, но не приложение (флажок-c запрещает вызов mbuild.). В этом случае Компилятор MATLAB создает следующие C-файлы:

  •  main.c- содержит C-код функции mlfMain;
  •  main.h- заголовочный файл функции mlfMain;
  •  mrank.c- содержит C-код функции mlfMrank;
  •  mrank.h- заголовочный файл функции mlfMrank;
  •  main-main.c- содержит интерфейс main-функции (main-обертка).

Чтобы создать выполнимое приложение, можно использовать mbuild для компиляции и компоновки этих С-файлов. Или можно полностью автоматизировать процесс создания, используя следующую команду для m-файлов без опции- c:

mcc -m main mrank

В этом случае в дополнение к указанным выше файлам будет создан еще файл main.exe.

Для создания C++-кода программы нужно добавить -L cpp к предыдущим командам и использовать C++-компилятор вместо C-компилятора.

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

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

mcc -m main

Компилятор сам найдет функцию mrank, которую вызывает m-функция main.

Смешивание m-файлов и программ на C либо C++.

Иногда при создании автономного приложения некоторая часть приложения представлена в виде одной или более функций m-файлов, а другая часть – непосредственно в C или C++-коде. Чтобы создать автономное приложение таким способом, нужно знать, как вызвать внешние C или C++-функции, созданные Компилятором MATLAB, и как обработать результаты этих C или C++-функций.

Замечание. Если откомпилированный m-код программы входит в большее приложение, то должен  быть создан файл обертки библиотеки, даже если отдельная библиотека не создана.

Рассмотрим простое приложение, исходный текст которого состоит из mrank.m и mrankwin.c. Файл mrank.m содержит функцию, которая вычисляет вектор рангов матриц магических квадратов порядка от 1до n. Код программы в файле mrankwin.c вызывает функцию mrank и выводит в отдельном окне значения, которые mrank возвращает. В результате получается приложение, которое принимает в командной строке размер n матрицы магического квадрата и выводит ранги этих матриц по порядку от 1 до n. Если в строке не указано значение n, то считается n = 12.

Процесс создания.

Для создания этого автономного приложения необходимо скомпилировать m-код и создать файл обертки библиотеки. Для этого спользуется команда:

mcc -t -W lib:Pkg -T link:exe -h mrank mrankwin.c libmmfile.mlib

Компилятор MATLAB создает C-файлы исходного кода mrank.c, mrank.h для функции mrank.m и файлы библиотеки: pkg.c, pkg.h, pkg.exports и pkg.mlib.

Далее команда вызывает mbuild для компиляции исходных файлов-результатов, созданных компилятором (mrank.c, Pkg.c, Pkg.h), с существующим C-исходным файлом (mrankwin.c) и связи с требуемыми библиотеками. В приведенной схеме коды С производит mcc, а остальную часть выполняет mbuild.

Хотя функция имеет имя mrank, после компиляции файла mrank.m она будет вызываться lfMrank.

#include <stdafx.h>

#include <stdio.h>

#include <math.h>

#include "matlab.h"

#include <windows.h>

/*Объявление ф-ции mlfMrank */

extern mxArray * mlfMrank( mxArray * );

static int totalcnt=0;

static int upperlim=0;

static int firsttime=1;

char *OutputBuffer;

void WinPrint( char *text )

{

int cnt;

if (firsttime) {

OutputBuffer = (char *)mxCalloc(1028, 1);

upperlim += 1028;

firsttime = 0;

}

cnt = strlen(text);

if (totalcnt + cnt >= upperlim) {

char *TmpOut;

TmpOut = (char *)mxCalloc(upperlim + 1028, 1);

memcpy(TmpOut, OutputBuffer, upperlim);

upperlim += 1028;

mxFree(OutputBuffer);

OutputBuffer=TmpOut;

}

strncat(OutputBuffer,text, cnt);

}

void WinFlush(void)

{ MessageBox(NULL, OutputBuffer, "MRANK", MB_OK);

mxFree(OutputBuffer); }

WINAPI

WinMain( HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdLine, int

nCmdShow )

{

#define MAXCMDTOKENS 128

LPSTR argv[MAXCMDTOKENS];

int argc = 0;

mxArray *N; /*Матрица для содержания n*/

mxArray *R; /*Результат*/

int n; /* Аргумент */

PkgInitialize(); /*Инициализация библ-ки M-функции*/

/*Установка обработчика печати*/

mlfSetPrintHandler(WinPrint);

/*Обработка ввода аргумента из командной строки*/

argv[argc]= "mrank.exe";

argv[++argc] = strtok(lpszCmdLine, " ");

while (argv[argc] != NULL) argv[++argc] = strtok(NULL, " ");

if (argc >= 2) {

n = atoi(argv[1]);

} else {

n = 12;

}

/*Создание массива 1x1 для n*/

N = mxCreateDoubleMatrix(1, 1, mxREAL);

*mxGetPr(N) = n;

/*Вызов mlfMrank*/

R = mlfMrank(N);

/*Печать результата*/

mlfPrintMatrix(R);

WinFlush();

/*Освобождение памяти*/

mxDestroyArray(N);

mxDestroyArray(R);

PkgTerminate(); /*Выход из библиотеки*/

return(0);

}

Ядром mrankwin.c является вызов функции mlfMrank. Большая часть того, что стоит перед этим вызовом, является кодом, создающим входной аргумент к mlfMrank. Большая часть того, что стоит после этого вызова,- это код программы для отображения вектора, который mlfMrank возвращает. Сначала программа должна вызвать функцию инициализации библиотеки, созданную компилятором:

PkgInitialize();/*Инициализация библиотеки m-функции */

Согласно объявлению:

extern mxArray * mlfMrank( mxArray * );

функция mlfMrank ожидает один входной параметр и возвращает одно значение.

Все параметры ввода и вывода- указатели на тип данных mxArray. Для создания и управления переменными mxArray * в коде программы на C можно использовать процедуры Математической библиотеки MATLAB C/C++. Например, чтобы создать mxArray * переменную N 1-на-1 с действительными данными, mrankwin вызывает mxCreateDoubleMatrix:

N = mxCreateDoubleMatrix(1, 1, mxREAL);

ициализированную переменную N в качестве единственного входного аргумента.

R = mlfMrank(N);

mlfMrank возвращает указатель в mxArray * переменную R.

Для вывода R на печать используется функция mlfPrintMatrix Математической библиотеки MATLAB через процедуру WinFlush();


Список используемой литературы

  1.  П.Н. Палухин, В.В. Поддубный Технология использования MATLAB-программ в средах визуального программирования C/C++//ТГУ-Томск, 2003-30 апреля
  2.  Инг Бей Взаимодействие разноязыковых программ. Руководство прграммиста. М.: Вильямс, 2005.- 880с.
  3.  Ануфриев И.Е. и др. MATLAB 7/Смирнов А.Б., Смирнова Е.Н.-Спб.:БХВ-Петербург, 2005-1104 с.
  4.  Подкур М. Л. и др. Программирование в среде Borland C++ Builder с математическими библиотеками MATLAB С/С++/ Подкур П. Н., Смоленцев Н. К.- М.: ДМК Пресс, 2006.- 496 с.

Дополнительные ресурсы:

  1.  http://cyberleninka.ru/article/n/tehnologiya-ispolzovaniya-matlab-programm-v-sredah-vizualnogo-programmirovaniya-c-c#ixzz3La1VhM3x 
  2.  www.sl-matlab.ru/about

Елец

2014г.


 

А также другие работы, которые могут Вас заинтересовать

32654. Место и роль управления проектами в современной теории управления. Сущность проектного и процессного подходов 35 KB
  Роль управления проектами в современном мире. Эти средства активно применяются не только для управления федеральными проектами и программами но и для осуществления управленческих функций внутри правительственного аппарата. В России же где организационная система и методы управления гораздо слабее чем на Западе эффект от внедрения УП окажется еще более значительным.
32655. Основные признаки, понятия и характеристики проекта 30 KB
  Основные признаки понятия и характеристики проекта. Но цели проекта ограничены во времени. При успешном завершении проекта целевая установка данная руководителю проекта заказчиком отпадает. Признак изменения Этот признак является наиболее важной характеристикой проекта так как осуществление проекта всегда несет изменения вещественной системы или предметной области в которой реализуется проект.
32656. Особенности управления программами и портфелями проектов 40.5 KB
  Особенности управления программами и портфелями проектов. При определенных условиях множество взаимосвязанных проектов объединяются в программу. Программа может быть сформулирована в терминах проектов и представлена как совокупность проектов объединенных общей целью выделенными ресурсами временем на ее выполнение технологией организацией и др. В дальнейшем мы будем рассматривать программы как совокупность проектов.
32657. Классификация проектов и программ 28 KB
  в которых осуществляется проект: социальные проекты экономические проекты организационные проекты технические проекты смешанные проекты. Сложные проекты включающие подпроекты и элементы различных типов проектов. Вид проекта: По характеру предметной области проекта: учебнообразовательные проекты; проекты исследования и развития; инновационные проекты.; инвестиционные проекты.
32658. Понятие о декомпозиции работ по проекту. Критерии выбора эффективной декомпозиции работ 46 KB
  Понятие о декомпозиции работ по проекту. Критерии выбора эффективной декомпозиции работ. Структура разбиения декомпозиции работ WBS Work Brekdown Structure иерархическая структура последовательной декомпозиции проекта на подпроекты пакеты работ различного уровня пакеты детальных работ. СРР является базовым средством для создания системы управления проектом так как позволяет решать проблемы организации работ распределения ответственности оценки стоимости создания системы отчетности эффективно поддерживать процедуры сбора...
32659. Типы структурных моделей проекта 202 KB
  Типы структурных моделей проекта. Типы структурных моделей проектов Типы структурных моделей проекта. Структурная модель проекта и принцип структуризации широко используются для построена и других структурных моделей применяемых в управлении проектом. Отметим наиболее существенные из них: Дерево целей и результатов первая по времени разработки структурная модель декомпозиции цели проекта на составные части.
32660. Жизненные циклы проекта и продукта 26.5 KB
  Жизненные циклы проекта и продукта. Жизненный цикл проекта совокупность последовательных фаз развития проекта и изобразить его концептуальную схему. Наиболее традиционным является разбиение проекта на четыре крупных этапа: определение проекта концепция разработка реализация и завершение. Определение проекта по существу подразумевает функцию выбора проекта.
32661. Участники проекта и их роль в обеспечении успеха проекта 31 KB
  Участники проекта и их роль в обеспечении успеха проекта. В настоящем разделе работы рассматривается состав участников проекта их роли и взаимосвязи распределение функций и ответственности. Главный участник Заказчик будущий владелец и пользователь результатов проекта. При этом заказчиком может быть как одна единственная организация так и несколько организаций объединивших свои усилия интересы и капиталы для реализации проекта и использования его результатов.
32662. Окружающая среда проекта 28 KB
  Окружающая среда проекта. Окружение проекта Каждый проект нужно рассматривать а также управлять им учитывая окружение в котором он существует. Окружающая среда проекта это совокупность внешних и внутренних в отношении проекта факторов влияющих на достижение результатов проекта. В данном разделе необходимо проанализировать факторы ближнего и дальнего окружения проекта которые могут оказать влияние на реализацию проекта.