Реализовать каскад фильтра секции четвертого порядка
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-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, добавляется один (ые), чтобы сделать размер L-by-5. Если знаменатель имеет размер L-by-5, значения первого столбца игнорируются и добавляются с помощью 1s. Размер этого свойства не может изменяться, когда объект заблокирован. Однако значения могут быть изменены.
Типы данных: 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 | Сведения об объекте filter System |
coeffs | Возвращает коэффициенты объекта System фильтра в структуре |
cost | Оценка затрат на внедрение фильтра Объект системы |
grpdelay | Ответ групповой задержки объекта System дискретно-временного фильтра |
Фильтрация шумного синусоидального сигнала с помощью 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];
Инициализация фильтра и анализатора спектра
Создайте фильтр IIR 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);

Проектирование низкочастотного фильтра секции четвертого порядка (FOS) с использованием fdesign функция. Используя этот фильтр, фильтруйте шумный синусоидальный сигнал двумя тонами, один на частоте 3 кГц, а другой на частоте 12 кГц.
Проектирование фильтра пятого порядка с использованием эллиптического метода в 'df2tsos' структура. Используйте масштабирование нормы L-бесконечности в частотной области. Укажите частоту полосы пропускания 0,15pi rad/sample и частоту полосы останова 0.25pi rad/sample. Укажите 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);
Визуализация частотной характеристики нижних частот проектируемого фильтра с помощью 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.