Используйте несколько классов в блоке.NET

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

В этом примере вы выполняете следующие шаги:

  • Используйте MATLAB® Продукт Compiler SDK™, чтобы создать блок (SpectraComp) содержа больше чем один класс.

  • Доступ к компоненту в приложении C# (SpectraApp.cs) или Microsoft® Visual Basic® приложение (SpectraApp.vb), включая использование MWArray иерархия классов, чтобы представлять данные.

  • Создайте и запустите приложение с помощью Visual Studio® Среда разработки.NET.

Приложение SpectraComp

Класс SignalAnalyzer выполняет быстрое преобразование Фурье (FFT) на массиве входных данных. Метод этого класса, computefft, возвращает результаты того БПФ как два выходных массива — массив точек частоты и спектральной плотности мощности.

Второй класс, Plotter, изображает возвращенные данные в виде графика с помощью plotfft метод. Эти два метода computefft и plotfft инкапсулируйте функции MATLAB. computefft вычисляет БПФ и спектральную плотность мощности входных данных и вычисляет вектор из точек частоты на основе длины вводимых данных и интервал выборки. plotfft отображает на графике данные о БПФ и спектральную плотность мощности в графическом окне MATLAB.

Файлы

Функции MATLABcomputefft.m
plotfft.m
Местоположение функции MATLABmatlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\SpectraExample\SpectraComp\
Участок кода C#matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\SpectraExample\SpectraCSApp\SpectraApp.cs
Участок кода Visual Basicmatlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\SpectraExample\SpectraVBApp\SpectraApp.vb

Процедура

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

    matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\SpectraExample
    

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

  2. Исследуйте функции MATLAB computefft.m и plotfft.m.

     computefft.m

     plotfft.m

  3. Создайте компонент.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.

  4. Решите, используете ли вы C# или Visual Basic, чтобы получить доступ к компоненту.

    • C

      Если вы используете C#, запишите исходный код для приложения C#, это получает доступ к компоненту.

      Пример приложения для этого примера находится в SpectraExample\SpectraCSApp\SpectraApp.cs.

       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.

       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 блокируйтесь, чтобы обработать исключения

  5. Откройте файл проекта.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.

  6. Добавьте ссылку на свой файл блока SpectraComp.dll.

  7. Добавьте ссылку на MWArray API.

    Если MATLAB установлен в вашей системеmatlabroot\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll
    Если MATLAB Runtime установлен в вашей системе<MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll

  8. Создайте и запустите 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...
    A figure that displays a plot of the power spectral density.

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

| |

Связанные примеры

Больше о