Реализуйте каскад фильтра секции четвертого порядка
The dsp.FourthOrderSectionFilter реализует каскад фильтров разделов четвертого порядка.
возвращает 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-на-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, один (ы) добавляется, чтобы сделать размер L -by-5. Если знаменатель имеет размер L -by-5, первые значения столбцов игнорируются и добавляются с помощью 1с. Размер этого свойства не может измениться, когда объект заблокирован. Однако значения могут быть изменены.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да
x - Входной сигналВходной сигнал, заданный как вектор или матрица.
Вход может быть сигналом переменного размера, то есть формат кадра каждого канала (количество строк) может измениться даже после блокировки объекта. Однако количество каналов (количество столбцов) не может измениться.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да
y - Отфильтрованный выходОтфильтрованный выход, возвращенный как вектор или матрица. Выход имеет тот же размер, тип данных и сложность, что и входной сигнал.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да
dsp.FourthOrderSectionFilterfvtool | Визуализация частотной характеристики фильтров DSP |
freqz | Частотная характеристика фильтра в дискретном времени Системного объекта |
impz | Импульсная характеристика фильтра в дискретном времени Системного объекта |
info | Информация о фильтре Системный объект |
coeffs | Возвращает фильтрация коэффициентов системного объекта в структуре |
cost | Оценка стоимости реализации фильтра Системный объект |
grpdelay | Групповая задержка фильтра в дискретном времени Системного объекта |
Фильтрация зашумленного синусоидального сигнала с помощью dsp.FourthOrderSectionFilter объект. Визуализируйте исходные и отфильтрованные сигналы с помощью анализатора спектра.
Входной сигнал
Входной сигнал является суммой двух синусоид с частотами 100 Гц и 350 Гц. Частота дискретизации составляет 1000 Гц.
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 с помощью num и den коэффициенты. Создайте анализатор спектра, чтобы визуализировать исходный синусоидальный сигнал и отфильтрованный сигнал.
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 кГц, и формат кадра устанавливается на 1024 выборки.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.