sosfilt

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

Синтаксис

y = sosfilt(sos,x)
y = sosfilt(sos,x,dim)

Описание

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

Примечание

Если любой вход к sosfilt является одинарной точностью, фильтрация реализована с помощью арифметики с одинарной точностью. Вывод, y, является одинарной точностью.

sos представляет раздел второго порядка цифровой фильтр H (z)

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

L-by-6 матрица, содержащая коэффициенты каждого раздела второго порядка в его строках.

SOS=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

Если x является матрицей, sosfilt применяет фильтр к каждому столбцу x независимо. Вывод y является матрицей, одного размера, содержа отфильтрованные данные, соответствующие каждому столбцу x.

Если x является многомерным массивом, фильтрами sosfilt по первому неодноэлементному измерению. Вывод y является многомерным массивом, одного размера как x, содержа отфильтрованные данные, соответствующие каждой строке и столбцу x.

Матрица разделов второго порядка, sos, входной сигнал, x, или оба могут быть двойной или одинарной точностью. Если по крайней мере один вход является одинарной точностью, фильтрация сделана с арифметикой одинарной точности.

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

Примеры

свернуть все

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

load chirp

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

Разработайте 7-й порядок Баттерворт 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);

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)

Ссылки

[1] Orfanidis, S.J., введение в обработку сигналов, Prentice Hall, Englewood Cliffs, NJ, 1996.

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

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

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

| |

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