Этот пример показывает вам, как создать блок.NET, который использует несколько классов, чтобы анализировать сигнал и изобразить результат в виде графика.
В этом примере вы выполняете следующие шаги:
Используйте MATLAB® Продукт Compiler SDK™, чтобы создать блок (SpectraComp) содержа больше чем один класс.
Доступ к компоненту в приложении C# (SpectraApp.cs) или Microsoft® Visual Basic® приложение (SpectraApp.vb), включая использование MWArray иерархия классов, чтобы представлять данные.
Создайте и запустите приложение с помощью Visual Studio® Среда разработки.NET.
Класс SignalAnalyzer выполняет быстрое преобразование Фурье (FFT) на массиве входных данных. Метод этого класса, computefft, возвращает результаты того БПФ как два выходных массива — массив точек частоты и спектральной плотности мощности.
Второй класс, Plotter, изображает возвращенные данные в виде графика с помощью plotfft метод. Эти два метода computefft и plotfft инкапсулируйте функции MATLAB. computefft вычисляет БПФ и спектральную плотность мощности входных данных и вычисляет вектор из точек частоты на основе длины вводимых данных и интервал выборки. plotfft отображает на графике данные о БПФ и спектральную плотность мощности в графическом окне MATLAB.
| Функции MATLAB | computefft.mplotfft.m |
| Местоположение функции MATLAB | |
| Участок кода C# | |
| Участок кода Visual Basic | |
Скопируйте следующую папку, которая поставляется с продуктом MATLAB к вашей папке работы:
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\SpectraExample
В командной строке MATLAB перейдите к новому SpectraExample\SpectraComp подпапка в вашей папке работы.
Исследуйте функции MATLAB computefft.m и plotfft.m.
Создайте компонент.NET с приложением Library Compiler или compiler.build.dotNETAssembly.
Назовите библиотеку SpectraComp. Сопоставьте класс под названием SignalAnalyzer к функциональному computefft.m, и сопоставьте второй класс под названием Plotter к функциональному plotfft.m.
Например, если вы используете compiler.build.dotNETAssemblyВвод:
cmap = containers.Map; cmap('SignalAnalyzer') = 'computefft.m'; cmap('Plotter') = 'plotfft'; buildResults = compiler.build.dotNETAssembly(cmap, ... 'AssemblyName','SpectraComp');
Для получения дополнительной информации смотрите, что инструкции в Генерируют блок.NET и Создают Приложение.NET.
Решите, используете ли вы C# или Visual Basic, чтобы получить доступ к компоненту.
C
Если вы используете C#, запишите исходный код для приложения C#, это получает доступ к компоненту.
Пример приложения для этого примера находится в SpectraExample\SpectraCSApp\SpectraApp.cs.
Следующий оператор показывает, как использовать MWArray библиотека классов, чтобы создать MWNumericArray это используется в качестве входа метода к computefft функция.
MWNumericArray data= new MWNumericArray(MWArrayComplexity.Real,
MWNumericType.Double, numSamples);Следующие операторы создают экземпляр класса SignalAnalyzer и вызовите метод computefft, запрос 3 выходных параметров.
SignalAnalyzer signalAnalyzer = new SignalAnalyzer();
...
MWArray[] argsOut= signalAnalyzer.computefft(3, data, interval);
Visual Basic
Если вы используете Visual Basic, запишите исходный код для приложения Visual Basic, это получает доступ к компоненту.
Пример приложения для этого примера находится в SpectraExample\SpectraVBApp\SpectraApp.vb.
Следующие операторы показывают, как использовать MWArray библиотека классов, чтобы создать необходимые типы данных:
Dim data As MWNumericArray = New MWNumericArray_
(MWArrayComplexity.Real, MWNumericType.Double, numSamples)
...
Dim resultArray As MWNumericArray = New MWNumericArray_
(MWArrayComplexity.Complex,
MWNumericType.Double, numElements)
Следующие операторы создают экземпляр класса SignalAnalyzer и вызовите метод computefft, запрос трех выходных параметров:
Dim signalAnalyzer As SignalAnalyzer = New SignalAnalyzer
...
Dim argsOut() As MWArray =
signalAnalyzer.computefft(3, data,
MWArray.op_Implicit(interval))В любом случае, SpectraApp программа делает следующее:
Создает входной массив со значениями, представляющими случайный сигнал двумя синусоидами на уровне 15 и 40 Гц, встроенных в нем
Создает MWNumericArray массив, который содержит данные
Инстанцирует SignalAnalyzer объект
Вызывает computefft метод, который вычисляет БПФ, частоту и спектральную плотность
Инстанцирует Plotter объект
Вызывает plotfft метод, который отображает данные на графике
Использует try/catch блокируйтесь, чтобы обработать исключения
Откройте файл проекта.NET, который соответствует вашему языку приложения с помощью Visual Studio.
C
Если вы используете C#, SpectraCSApp папка содержит файл проекта Visual Studio.NET для этого примера. Откройте проект в Visual Studio.NET путем двойного клика по SpectraCSApp.csproj в Windows® Проводник. Можно также открыть его с рабочего стола путем щелчка правой кнопкой по SpectraCSApp.csproj и выбора Open Outside MATLAB.
Visual Basic
Если вы используете Visual Basic, SpectraVBApp папка содержит файл проекта Visual Studio.NET для этого примера. Откройте проект в Visual Studio.NET путем двойного клика по SpectraVBApp.vbproj в Windows Explorer. Можно также открыть его с рабочего стола путем щелчка правой кнопкой по SpectraVBApp.vbproj и выбора Open Outside MATLAB.
Добавьте ссылку на свой файл блока SpectraComp.dll.
Добавьте ссылку на MWArray API.
| Если MATLAB установлен в вашей системе | |
| Если MATLAB Runtime установлен в вашей системе | |
Создайте и запустите SpectraApp приложение в Visual Studio.NET.
Программа отображает следующий вывод:
FFT: 1.0e+02 * 4.8646 + 0.0000i -0.0289 + 0.1080i -0.0326 + 0.0237i -0.0141 - 0.0148i 0.0674 - 0.0487i 0.0753 + 0.0669i 0.0275 - 0.0101i -0.0429 + 0.0472i 0.0803 - 0.1163i -0.0619 - 0.1072i 0.0565 - 0.0502i -0.0223 + 0.0587i -0.0853 - 0.0812i -0.0662 - 0.0143i 0.0543 - 0.0972i 0.0814 - 0.0463i -0.0981 - 0.0190i 0.0042 + 0.0083i -0.0339 + 0.0290i 0.0291 + 0.0036i Frequency: 0.0000 + 0.0000i 0.0999 + 0.0000i 0.1998 + 0.0000i 0.2997 + 0.0000i 0.3996 + 0.0000i 0.4995 + 0.0000i 0.5994 + 0.0000i 0.6993 + 0.0000i 0.7992 + 0.0000i 0.8991 + 0.0000i 0.9990 + 0.0000i 1.0989 + 0.0000i 1.1988 + 0.0000i 1.2987 + 0.0000i 1.3986 + 0.0000i 1.4985 + 0.0000i 1.5984 + 0.0000i 1.6983 + 0.0000i 1.7982 + 0.0000i 1.8981 + 0.0000i Power Spectral Density: 15.3755 + 0.0000i 0.3534 + 0.0000i 0.1274 + 0.0000i 0.0646 + 0.0000i 0.2628 + 0.0000i 0.3183 + 0.0000i 0.0925 + 0.0000i 0.2016 + 0.0000i 0.4465 + 0.0000i 0.3912 + 0.0000i 0.2387 + 0.0000i 0.1985 + 0.0000i 0.3723 + 0.0000i 0.2140 + 0.0000i 0.3520 + 0.0000i 0.2960 + 0.0000i 0.3158 + 0.0000i 0.0294 + 0.0000i 0.1411 + 0.0000i 0.0927 + 0.0000i Plotting Power spectral density, please wait...

libraryCompiler | compiler.build.dotNETAssembly | deploytool