Цифровая фильтрация сигнала в Matlab

Рассмотрим процесс фильтрации сигнала при помощи цифрового фильтра в Matlab.

Открываем матлаб и начинаем выполнять функции.

Сначала зададим параметры.

Fs=100;  % частота дискретизации
tmax=5;  % промежуток рассматриваемого времени
Nsamps = tmax*Fs;  % рассматриваемый период

Задаём временную шкалу для нашего сигнала:

t = 1/Fs:1/Fs:tmax;

Теперь задаём сигнал и помеху:

s1 = 10*cos(2*pi*t);  % сигнал
s2 = 2*cos(20*pi*t + pi/4);  % высокочастотная помеха
s3 = s1 + s2;  % всё вместе

Выведем на экран сигналы.

Оригинальный сигнал:

plot(t,s1)
ylabel('Амплитуда')
xlabel('Время (с)')
title('Оригинальный сигнал')
ylim([-15 15])

Вот что получилось:

Оригинальный сигнал

Теперь сигнал с высокочастотной помехой:

figure
plot(t,s3)
xlabel('Время (с)')
ylabel('Амплитуда')
title('Сигнал с помехой')ylim([-15 15])

Сигнал с помехой

Синтезировать мы фильтр сегодня не будем, а воспользуемся простейшим случаем БИХ фильтра нижних частот.

Задаём коэффициенты фильтра:

b = 1;
a = [1 -1];

Фильтруем сигнал при помощи функции filter :

s3_f = filter(b,a,s3);

Теперь нужно изменить амплитуду результата. Если честно понятия не имею почему она в 15 раз больше чем нужно:

s3_f = s3_f/15;

Выводим результат:

figure
plot(t,s3_f)
xlabel('Время (с)')
ylabel('Амплитуда (В)')
title('Сигнал после фильтрации')
ylim([-15 15])

Результат выполнения должен быть таким:

Сигнал после фильтрации

В ближайшее время будет ещё статья о разборе спектра сигнала.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий