dsp.SineWave

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

Описание

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

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

Сгенерировать дискретное время синусоидальный сигнал:

  1. Создайте dsp.SineWave объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

Создание

Описание

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

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

Пример: синус = dsp.SineWave ('Амплитуда', 2);

пример

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

Свойства

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

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

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

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

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

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

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

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

Зависимости

Это свойство является настраиваемым только когда вы метод установки для любого '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'единственный, или 'Custom'.

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

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

Пример: numerictype ([], 32,30)

Пример: numerictype ([], 16,15)

Зависимости

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

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

Синтаксис

Описание

пример

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

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

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

Sine wave выходной параметр, возвращенный как вектор или матрица. Свойство SamplesPerFrame определяет количество строк в выходной матрице. Если Частота или свойство 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)

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

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

В этом примере показано, как к lowpass фильтруют сигнал с шумом в MATLAB и визуализируют исходные и отфильтрованные сигналы с помощью спектра анализатор. Для версии Simulink этого примера смотрите Системы координат Фильтра Шумного Синусоидального сигнала в 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. Установите частоту полосы пропускания на 5 000 Гц и частоту полосы задерживания к 8 000 Гц. Неравномерность в полосе пропускания составляет 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'};

Задайте выборки на систему координат

Этот пример использует основанную на системе координат обработку, где данные обрабатываются один кадр за один раз. Каждая система координат данных содержит последовательные выборки от независимого канала. Основанная на системе координат обработка выгодна для многих приложений обработки сигналов, потому что можно обработать несколько выборок целиком. Путем буферизации данных в системы координат и обработки мультидемонстрационных кадров данных, можно улучшить вычислительное время алгоритмов обработки сигналов. Определите номер выборок на систему координат к 4 000.

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

Отфильтруйте шумный синусоидальный сигнал

Добавьте нулевой средний белый Гауссов шум со стандартным отклонением 0,1 к сумме синусоид. Отфильтруйте результат с помощью КИХ-фильтра. При выполнении симуляции спектр анализатор показывает, что частоты выше 8 000 Гц в исходном сигнале ослабляются. Получившийся сигнал обеспечивает пик на уровне 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)

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

Создайте сигнал, который является суммой трех синусоид с частотами на уровне 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)

Больше о

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

Алгоритмы

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

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

Представленный в R2012a