Этот пример показывает вам, как создать блок.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.m plotfft.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