Реализуйте каскад фильтра раздела четвертого порядка
dsp.FourthOrderSectionFilter
реализует каскад четвертых фильтров раздела порядка.
fos = dsp.FourthOrderSectionFilter
fos = dsp.FourthOrderSectionFilter(num,den)
fos = dsp.FourthOrderSectionFilter(Name,Value)
возвращает объект fos
= dsp.FourthOrderSectionFilterFourthOrderSectionFilter
, fos
, который реализует каскад четвертых разделов фильтра порядка.
возвращает объект fos
= dsp.FourthOrderSectionFilter(num
,den
)FourthOrderSectionFilter
с набором свойств Numerator
к num
и набором свойств Denominator
к den
.
возвращает объект fos
= dsp.FourthOrderSectionFilter(Name,Value
)FourthOrderSectionFilter
с каждым заданным набором имени свойства к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке.
fos = dsp.FourthOrderSectionFilter('Numerator',num,'Denominator',den)
num
— Коэффициенты числителя фильтра1 0.1 0.2 0.3 0.4
] (значение по умолчанию) | вектор - строка | матрицаКоэффициенты числителя фильтра, заданного как L-by-5 матрица, где L является количеством разделов фильтра. Размер этого свойства не может измениться, когда объект заблокирован. Однако значения могут быть изменены.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да
den
— Коэффициенты знаменателя фильтра1 0.1 0.2 0.3 0.4
] (значение по умолчанию) | вектор - строка | матрицаКоэффициенты знаменателя фильтра, заданного как L-by-5 матрица или L-by-4 матрица, где L является количеством разделов фильтра. Ведущие коэффициенты знаменателя приняты, чтобы всегда быть 1
. Если знаменатель имеет размер, L-by-4, один (s) добавлены, чтобы сделать размер L-by-5. Если знаменатель имеет размер L-by-5, первые значения столбцов проигнорированы и добавлены с 1 с. Размер этого свойства не может измениться, когда объект заблокирован. Однако значения могут быть изменены.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да
y = fos(x)
x
Входной сигналВходной сигнал, заданный как вектор или матрица.
Вход может быть сигналом переменного размера, то есть, формат кадра каждого канала (количество строк) может измениться даже после того, как объект заблокирован. Однако количество каналов (количество столбцов) не может измениться.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да
y
— Filtered выводФильтрованный выходной параметр, возвращенный как вектор или матрица. Вывод имеет тот же размер, тип данных и сложность как входной сигнал.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да
dsp.FourthOrderSectionFilter
fvtool | Визуализируйте частотную характеристику фильтров DSP |
freqz | Частотная характеристика фильтра |
impz | Импульсный ответ дискретного времени фильтрует Системный объект |
info | Информация о Системном объекте фильтра |
coeffs | Отфильтруйте коэффициенты |
cost | Оценка стоится за реализацию Системных объектов фильтра |
grpdelay | Ответ групповой задержки дискретного времени фильтрует Системный объект |
step | Запустите алгоритм Системного объекта |
release | Высвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики |
reset | Сбросьте внутренние состояния Системного объекта |
clone | Создайте объект дублированной системы |
isLocked | Определите, используется ли Системный объект |
Отфильтруйте шумный синусоидальный сигнал с помощью объекта dsp.FourthOrderSectionFilter
. Визуализируйте исходные и отфильтрованные сигналы с помощью спектра анализатор.
Входной сигнал
Входной сигнал является суммой двух синусоид с частотами 100 Гц и 350 Гц. Частота дискретизации составляет 1 000 Гц.
frameSize = 1024; fs = 1000; SINE1 = dsp.SineWave(5,100,'SamplesPerFrame',1024,'SampleRate',fs); SINE2 = dsp.SineWave(2,350,pi/2,'SamplesPerFrame',1024,... 'SampleRate',fs); x = SINE1() + SINE2();
Коэффициенты фильтра Раздела четвертого порядка (FOS)
Числитель и коэффициенты знаменателя для фильтра FOS получены с помощью designParamEq
, который является частью Audio Toolbox:
%N = [2,4]; %gain = [5,10]; %centerFreq = [0.025,0.75]; %bandwidth = [0.025,0.35]; %mode = 'fos'; %[num,den] = designParamEQ(N,gain,centerFreq,bandwidth,mode); num = [1.0223 -1.9368 0.9205 0 0 1.5171 2.3980 1.4317 0.6416 0.2752]; den = [-1.9368 0.9428 0 0 2.0136 1.9224 1.0260 0.3016];
Инициализируйте фильтр и спектр Анализатор
Создайте БИХ-фильтр FOS с помощью коэффициентов den
и num
. Создайте спектр анализатор, чтобы визуализировать исходный синусоидальный сигнал и отфильтрованный сигнал.
fos = dsp.FourthOrderSectionFilter('Numerator',num,... 'Denominator',den); scope = dsp.SpectrumAnalyzer(... 'SampleRate',fs,... 'PlotAsTwoSidedSpectrum',false,... 'FrequencyScale','Linear',... 'FrequencyResolutionMethod','WindowLength',... 'WindowLength',frameSize,... 'Title','Original and Filtered Signals',... 'ShowLegend',true,... 'ChannelNames',{'Original Signal','Filtered Signal'});
Отфильтруйте входной сигнал и визуализируйте исходные и отфильтрованные спектры.
y = fos(x); scope([x,y]); release(scope);
Разработайте lowpass фильтр раздела четвертого порядка (FOS) с помощью функции fdesign
. Используя этот фильтр, отфильтруйте шумный синусоидальный сигнал с двумя тонами, один на уровне 3 кГц, и другим на уровне 12 кГц.
Разработайте фильтр пятого порядка с помощью эллиптического метода в структуре 'df2tsos'
. Используйте L-норму-бесконечности, масштабирующуюся в частотном диапазоне. Задайте частоту полосы пропускания, чтобы быть 0.15pi рад/выборка и частота полосы задерживания, чтобы быть 0.25pi рад/выборка. Задайте 1 дБ допустимой пульсации полосы пропускания и затухание полосы задерживания 60 дБ.
Fp = 0.15; Fst = 0.25; Ap = 1; Ast = 60;
Коэффициенты фильтра масштабируются с помощью объекта fdopts.sosscaling
. Масштабирующийся объект задан, чтобы не иметь никаких ограничений числителя, и ScaleValueConstraint
установлен в 'unit'
, задав масштабирование, чтобы быть масштабированием единицы.
fdo = fdopts.sosscaling; fdo.NumeratorConstraint='none'; fdo.ScaleValueConstraint='unit'; f = fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast); hFilter = design(f,'ellip','SystemObject',true,... 'FilterStructure','df2tsos','SOSScaleNorm','Linf',... 'SOSScaleOpts',fdo);
Визуализируйте lowpass частотную характеристику разработанного фильтра с помощью fvtool
.
fvtool(hFilter)
Извлеките матрицу SOS (представление раздела второго порядка) фильтра.
sosV = hFilter.SOSMatrix;
Извлеките числитель и коэффициенты знаменателя из Матрицы SOS.
num = zeros(size(sosV,1),5); den = zeros(size(sosV,1),5); for i = 1:size(sosV,1) [num0,den0] = iirlp2bp(sosV(i,1:3),sosV(i,4:6),Fp,[0.25,0.75]); num(i,1:length(num0)) = num0; den(i,1:length(num0)) = den0; end
Создайте фильтр раздела четвертого порядка с помощью извлеченного числителя и коэффициентов знаменателя.
fos = dsp.FourthOrderSectionFilter(num,den);
Визуализируйте частотную характеристику фильтра раздела четвертого порядка с помощью fvtool
.
fvtool(fos);
Вход является суммой двух синусоид с частотами 3 кГц и 12 кГц, соответственно. Входная частота дискретизации составляет 44,1 кГц, и формат кадра установлен в 1 024 выборки.
fs = 44100; FrameLength = 1024; SINE1 = dsp.SineWave('SamplesPerFrame',FrameLength,'SampleRate',fs,'Frequency',3000); SINE2 = dsp.SineWave('SamplesPerFrame',FrameLength,'SampleRate',fs,'Frequency',12000);
Инициализируйте спектр анализатор, чтобы визуализировать спектры сигнала.
scope = dsp.SpectrumAnalyzer(... 'SampleRate',fs,... 'PlotAsTwoSidedSpectrum',false,... 'Method','Filter bank',... 'Title','Original and Filtered Signals',... 'ShowLegend',true,... 'YLimits',[-180 50],... 'ChannelNames',{'Original Signal','Filtered Signal'});
Отфильтруйте шумный входной сигнал с фильтром раздела четвертого порядка. Визуализируйте спектр исходного сигнала и отфильтрованного сигнала с помощью спектра анализатор.
for index = 1:1000 x = SINE1() + SINE2()+ 0.001*randn(FrameLength,1); y = fos(x); scope([x,y]); end
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.