dsp.SineWave

Сгенерируйте дискретную синусоиду

Описание

The 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 ('Amplitude', 2);

пример

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

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Амплитуда синусоиды, заданная как одно из следующего:

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

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

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

Зависимости

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

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

Частота синусоиды в Гц, заданная как одно из следующего:

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

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

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

Смещение фазы синусоиды в радианах, заданное как одно из следующего:

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

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

Типы данных: 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.

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

расширить все

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

OutputDataType наборов свойств тип данных выходов.

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Примечание. Если вы используете 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.

Этот пример показов, как lowpass фильтровать сигнал с шумом в MATLAB и визуализировать исходные и фильтрованные сигналы с помощью анализатора спектра. Для версии Simulink этого примера смотрите Системы Координат of a Noisy Sine Wave Signal in Simulink.

Задайте источник сигнала

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

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

Создайте Lowpass фильтр

Lowpass конечная импульсная характеристика фильтр, dsp.LowpassFilter, проектирует фильтр конечной импульсной характеристики lowpass минимального порядка, используя обобщенный алгоритм Remez конечной импульсной характеристики создания фильтра. Установите частоту полосы пропускания равную 5000 Гц, и частоту полосы остановки равную 8000 Гц. Значение неравномерности в полосе пропускания составляет 0,1 дБ, а затухание в полосе задерживания составляет 80 дБ.

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

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

Установите спектральный анализатор, чтобы сравнить спектры степени исходных и фильтрованных сигналов. Спектральные модули являются dBm.

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;

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

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

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 кГц.

Спроектируйте полосно-пропускной фильтр Конечную Импульсную Характеристику 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