sosfilt

Цифровая фильтрация БИХ второго порядка (биквадратичная)

Описание

пример

y = sosfilt(sos,x) применяет цифровой фильтр секции второго порядка sos к входному сигналу x.

y = sosfilt(sos,x,dim) действует вдоль размерности dim.

Примеры

свернуть все

Загрузка chirp.mat. Файл содержит сигнал, y, который имеет большую часть своей степени выше Fs/4или половину частоты Найквиста. Частота дискретизации 8192 Гц.

load chirp

t = (0:length(y)-1)/Fs;

Создайте фильтр Butterworth седьмого порядка, чтобы ослабить компоненты сигнала ниже Fs/4. Используйте нормированную частоту среза 0,48, рад/выборка. Выражайте коэффициенты фильтра в терминах секций второго порядка.

[zhi,phi,khi] = butter(7,0.48,'high');
soshi = zp2sos(zhi,phi,khi);

freqz(soshi)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Фильтрация сигнала. Отображение исходных и высокочастотных сигналов. Используйте ту же шкалу оси Y для обоих графиков.

outhi = sosfilt(soshi,y);

figure
subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outhi)
title('Highpass-Filtered Signal')
xlabel('Time (s)')
ylim(ys)

Figure contains 2 axes. Axes 1 with title Original Signal contains an object of type line. Axes 2 with title Highpass-Filtered Signal contains an object of type line.

Спроектируйте lowpass с такими же спецификациями. Фильтрация сигнала и сравнение результата с исходным. Используйте ту же шкалу оси Y для обоих графиков. Результатом в основном является шум.

[zlo,plo,klo] = butter(7,0.48);
soslo = zp2sos(zlo,plo,klo);

outlo = sosfilt(soslo,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outlo)
title('Lowpass-Filtered Signal')
xlabel('Time (s)')
ylim(ys)

Figure contains 2 axes. Axes 1 with title Original Signal contains an object of type line. Axes 2 with title Lowpass-Filtered Signal contains an object of type line.

Входные параметры

свернуть все

Цифровой фильтр секции второго порядка, заданный как матрица L-на-6, где L - количество секций второго порядка. Матрица

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

представляет секции второго порядка цифровой фильтр

H(z)=k=1LHk(z)=k=1Lb0k+b1kz1+b2kz21+a1kz1+a2kz2.

Пример: [b,a] = butter(3,1/32); sos = tf2sos(b,a) задает фильтр Баттерворта третьего порядка с нормализованной частотой 3 дБ π/32 рад/выборка.

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

Входной сигнал, заданный как вектор, матрица или N -D массив.

Пример: x = [2 1].*sin(2*pi*(0:127)'./[16 64]) задает двухканальную синусоиду.

Типы данных: single | double
Поддержка комплексного числа: Да

Размерность для работы, заданная как положительный целочисленный скаляр По умолчанию, sosfilt действует вдоль первого измерения массива x с размером больше 1.

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

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

свернуть все

Отфильтрованный сигнал, возвращенный в виде вектора, матрицы или N массива -D. y имеет тот же размер, что и x.

Ссылки

[1] Банк, Балас. «Преобразование фильтров бесконечной импульсной характеристики в параллельную форму». Журнал обработки сигналов IEEE. Том 35, № 3, май 2018, с. 124-130.

[2] Orfanidis, Sophocles J. Введение в обработку сигналов. Englewood Cliffs, Нью-Джерси: Prentice Hall, 1996.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

| |

Представлено до R2006a