exponenta event banner

dsp. SineWave

Генерировать дискретные синусоидальные волны

Описание

dsp.SineWave Система object™ генерирует реальный или комплексный многоканальный синусоидальный сигнал с независимой амплитудой, частотой и фазой в каждом выходном канале.

Как для действительных, так и для комплексных синусоид свойства Амплитуда (Amplitude), Частота (Frequency) и Сдвиг фазы (PhaseOffset) могут быть скалярами или N векторами длины, где N - количество каналов на выходе. При указании хотя бы одного из этих свойств в качестве вектора длины N к каждому из N каналов применяются скалярные значения, заданные для других свойств.

Для формирования дискретно-временного синусоидального сигнала:

  1. Создать dsp.SineWave и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

sine = dsp.SineWave создает синусоидальный объект, который генерирует синусоиду с действительными значениями с амплитудой 1, частотой 100 Гц и фазовым сдвигом 0. По умолчанию объект синусоидальной волны генерирует только одну выборку.

sine = dsp.SineWave(Name,Value) создает синусоидальный объект с заданным значением каждого свойства. Заключите каждое имя свойства в отдельные кавычки.

Пример: sine = dsp. SineWave («Амплитуда», 2);

пример

sine = dsp.SineWave(amp,freq,phase,Name,Value) создает синусоидальный объект со свойством Amplitude, равным amp, свойство «Частота» имеет значение freq, свойство PhaseOffset имеет значение phaseи любые другие указанные свойства, для которых заданы указанные значения.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Амплитуда синусоидальной волны, определяемая как одно из следующих значений:

  • scalar -- скаляр применяется ко всем каналам.

  • Вектор - вектор длины - N содержит амплитуды синусоидальных волн в каждом из N выходных каналов. Длина вектора должна совпадать со значением, указанным для свойств Frequency и PhaseOffset.

Настраиваемый: Да

Зависимости

Это свойство можно настроить, только если для свойства Method задано значение 'Trigonometric function' или 'Differential'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Частота синусоидальной волны в Гц, определяемая как одно из следующих значений:

  • scalar -- скаляр применяется ко всем каналам.

  • Вектор - вектор длины - N содержит частоты синусоидальных волн в каждом из N выходных каналов. Длина вектора должна быть такой же, как заданная для свойств Amplitude и PhaseOffset.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Фазовое смещение синусоидальной волны в радианах, указанное как одно из следующих значений:

  • scalar -- скаляр применяется ко всем каналам.

  • Вектор - вектор длины - N содержит фазовые смещения синусоидальных волн в каждом из N выходных каналов. Длина вектора должна быть такой же, как заданная для свойств амплитуды и частоты.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Флаг, указывающий, является ли форма сигнала действительной или сложной, определяется следующим образом:

  • false - Выходной сигнал формы сигнала является реальным.

  • true - Выходной сигнал сигнала сложен.

Метод, используемый для генерации синусоид, указанный как один из следующих:

  • 'Trigonometric function' - Объект вычисляет синусоиду путем выборки функции непрерывного времени.

  • 'Table lookup' - Объект предварительно вычисляет уникальные выборки каждой выходной синусоиды в начале моделирования и по мере необходимости отзывает выборки из памяти.

  • 'Differential' - Объект использует пошаговый алгоритм. Этот алгоритм вычисляет выходные выборки на основе выходных значений, вычисленных в предыдущее время выборки и предварительно вычисленных терминов обновления.

Оптимизация таблицы значений синусов для скорости или памяти, указанных как:

  • 'Speed' - Таблица содержит k элементов, где k - количество входных выборок за один полный период синусоидальной волны. Период каждой синусоиды должен быть целым кратным 1/Fs, где Fs - значение свойства SampleRate. То есть каждый элемент свойства Frequency должен иметь вид Fs/m, где m - целое число, большее, чем 1.

  • 'Memory' - Таблица содержит k/4 элементов.

Зависимости

Это свойство применяется только при установке Method свойство для 'Table lookup'.

Частота дискретизации выходного сигнала в Гц, заданная как положительный скаляр.

Пример: 44100

Пример: 22050

Количество последовательных выборок от каждой синусоиды для буферизации в выходной кадр, указанное как положительное целое число.

Пример: 1000

Пример: 5000

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Тип данных синусоидального выхода, указанный как 'double', 'single', или 'Custom'.

Свойства с фиксированной точкой

Выходные длины слов и дробей, определяемые как автоматически назначаемый числовой тип с длиной слова 16.

Пример: числовой тип ([], 32,30)

Пример: числовой тип ([], 16,15)

Зависимости

Это свойство применяется только при установке для свойства Method значения 'Table lookup' и свойство OutputDataType для 'Custom'.

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

Синтаксис

Описание

пример

sineOut = sine() создает синусоидальный выходной сигнал, sineOut.

Выходные аргументы

развернуть все

Синусоидальный выходной сигнал, возвращаемый в виде вектора или матрицы. Свойство PerperFrame определяет количество строк в выходной матрице. Если свойство Frequency или PhaseOffset является вектором, длина вектора определяет количество столбцов (каналов) в выходной матрице. Если Frequency или PhaseOffset свойства - скаляр, то число каналов в выходной матрице равно 1.

Свойство OutputDataType задает тип данных вывода.

Типы данных: single | double | fi

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Примечание.При использовании R2016a или более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Генерация синусоидальной волны с амплитудой 2, частотой 10 Гц и начальной фазой 0.

sine1 = dsp.SineWave(2,10);
sine1.SamplesPerFrame = 1000;
y = sine1();
plot(y)

Figure contains an axes. The axes contains an object of type line.

Создайте две синусоидальные волны, смещенные на фазу pi/2 радиан.

sine2 = dsp.SineWave;
sine2.Frequency = 10;
sine2.PhaseOffset = [0 pi/2];
sine2.SamplesPerFrame = 1000;
y = sine2();
plot(y)

Figure contains an axes. The axes contains 2 objects of type line.

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

Указать источник сигнала

Входной сигнал представляет собой сумму двух синусоидальных волн с частотами 1 кГц и 10 кГц. Частота дискретизации составляет 44,1 кГц.

Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3);
Sine2 = dsp.SineWave('Frequency',10e3,'SampleRate',44.1e3);

Создать фильтр нижних частот

Фильтр FIR нижних частот, dsp.LowpassFilterразрабатывает фильтр нижних частот FIR минимального порядка с использованием обобщенного алгоритма проектирования фильтра FIR Ремеза. Установите частоту полосы пропускания 5000 Гц, а частоту полосы останова 8000 Гц. Пульсация полосы пропускания составляет 0,1 дБ, а затухание полосы останова - 80 дБ.

FIRLowPass = dsp.LowpassFilter('PassbandFrequency',5000,...
    'StopbandFrequency',8000);

Создать анализатор спектра

Настройте анализатор спектра для сравнения спектров мощности исходных и отфильтрованных сигналов. Единицы спектра - дБм.

SpecAna = dsp.SpectrumAnalyzer('PlotAsTwoSidedSpectrum',false, ...
    'SampleRate',Sine1.SampleRate, ...
    'NumInputPorts',2,...
    'ShowLegend',true, ...
    'YLimits',[-145,45]);

SpecAna.ChannelNames = {'Original noisy signal','Low pass filtered signal'};

Укажите образцы для каждого кадра

В этом примере используется обработка на основе кадров, при которой данные обрабатываются по одному кадру за раз. Каждый кадр данных содержит последовательные выборки из независимого канала. Обработка на основе кадров является выгодной для многих приложений обработки сигналов, поскольку можно обрабатывать несколько выборок одновременно. Буферизация данных в кадры и обработка многопрофильных кадров данных позволяет увеличить вычислительное время алгоритмов обработки сигналов. Установите количество выборок на кадр равным 4000.

Sine1.SamplesPerFrame = 4000;
Sine2.SamplesPerFrame = 4000;

Фильтрация шумового синусоидального сигнала

Добавьте нулевое среднее значение белого гауссова шума со стандартным отклонением 0,1 к сумме синусоидальных волн. Фильтрация результата с помощью фильтра FIR. Во время моделирования анализатор спектра показывает, что частоты выше 8000 Гц в сигнале источника ослаблены. Результирующий сигнал поддерживает пик на частоте 1 кГц, поскольку он падает в полосе пропускания фильтра нижних частот.

for i = 1 : 1000
    x = Sine1()+Sine2()+0.1.*randn(Sine1.SamplesPerFrame,1);
    y = FIRLowPass(x);
    SpecAna(x,y);
end
release(SpecAna)

Полосовой фильтр - дискретно-временной синусоидальный сигнал, состоящий из трех синусоид на частотах 1 кГц, 10 кГц и 15 кГц.

Создайте полосовой фильтр FIR Equiripple, сначала создав объект спецификации конструкции полосового фильтра, а затем сконструировав фильтр с использованием этих спецификаций.

Расчетный полосовой фильтр

Создание объекта спецификации конструкции полосового фильтра с помощью fdesign.bandpass.

bandpassSpecs = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2', ...
    1/4,3/8,5/8,6/8,60,1,60);

Перечислите доступные методы конструирования для этого объекта.

designmethods(bandpassSpecs)
Design Methods for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2):


butter
cheby1
cheby2
ellip
equiripple
kaiserwin

Для проектирования фильтра Equiripple выберите 'equiripple'.

bpFilter = design(bandpassSpecs,'equiripple','Systemobject',true)
bpFilter = 
  dsp.FIRFilter with properties:

            Structure: 'Direct form'
      NumeratorSource: 'Property'
            Numerator: [1x37 double]
    InitialConditions: 0

  Show all properties

Визуализация частотной характеристики проектируемого фильтра.

fvtool(bpFilter,'Fs',44100)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

Создание синусоидального сигнала

Создайте сигнал, который представляет собой сумму трех синусоид с частотами 1 кГц, 10 кГц и 15 кГц. Инициализируйте анализатор спектра для просмотра исходного сигнала и отфильтрованного сигнала.

Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);
Sine2 = dsp.SineWave('Frequency',10e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);
Sine3 = dsp.SineWave('Frequency',15e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);

SpecAna = dsp.SpectrumAnalyzer('PlotAsTwoSidedSpectrum',false, ...
    'SampleRate',Sine1.SampleRate, ...
    'NumInputPorts',2,...
    'ShowLegend',true, ...
    'YLimits',[-240,45]);

SpecAna.ChannelNames = {'Original noisy signal','Bandpass filtered signal'};

Синусоидальный сигнал фильтра

Фильтрация синусоидального сигнала с помощью разработанного полосового фильтра. Просмотрите исходный сигнал и отфильтрованный сигнал в анализаторе спектра. Тональный сигнал на частоте 1 кГц отфильтровывается и ослабляется. Тональный сигнал на частоте 10 кГц не изменяется, и тональный сигнал на частоте 15 кГц слегка ослабляется, поскольку он появляется в переходной полосе фильтра.

for i = 1 : 1000
    x = Sine1()+Sine2()+Sine3();
    y = bpFilter(x);
    SpecAna(x,y);
end
release(SpecAna)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. These objects represent Original noisy signal, Bandpass filtered signal.

Подробнее

развернуть все

Алгоритмы

развернуть все

Расширенные возможности

.
Представлен в R2012a