sosfilt

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

Описание

пример

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

y = sosfilt(sos,x,dim) управляет по измерению dim.

Примеры

свернуть все

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

load chirp

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

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

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

freqz(soshi)

Отфильтруйте сигнал. Отобразите исходные и highpass-отфильтрованные сигналы. Используйте ту же шкалу оси 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)

Спроектируйте фильтр 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)

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

свернуть все

Цифровой фильтр секции второго порядка, заданный как L-by-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] Orfanidis, Софокл Дж. Введение в обработку сигналов. Englewood Cliffs, NJ: Prentice Hall, 1996.

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

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

Смотрите также

| |

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