Цифровая обработка сигналов

Линейная свертка

Линейная свертка - одна из фундаментальных операций цифровой обработки сигналов. Реакция системы с импульсной характеристикой hi на входной сигнал xi вычисляется как свертка этих двух последовательностей.

Например имеем:

{hi}={h0, h1, h2, h3}
{xl}={x0, x1, x2}

Как найти нули и полюсы системы в Matlab

В ходе работы с цифровыми (и не только) сигналами часто необходимо найти нули и плюсы системы. Кстати буржуи зовут числитель numerator`ом,а знаменатель - denumerator`ом. Стоит знать это при работе с их материалами и справочной системой Matlab.

Ближе к делу. В матлаб можно очень просто найти нули и полюсы. Для этого вам необходима переменная со значениями коэффициентов полинома числителя и знаменателя.

num = 1; % числитель
den = [1 -1]; % знаменатель

Т.е. вот такая дробь:

sys =
 
    1
  -----
  z - 1

Спектральный анализ сигнала в Matlab

Одной из самых распространённых задач является выявление в спектре сигнала составляющих. Делается это для того чтобы отфильтровать сигнал. Ведь иногда по одной линии передаётся далеко не один сигнал, в то время как обрабатывать каждый из них нужно по разному.

Рассмотрим простейший случай такого анализа в Matlab.

Сформируем временную сетку:

>> t = 0:0.001:0.6;

Теперь зададим сигнал для тренировок:

>> x = sin(2*pi*50*t) + sin(2*pi*120*t);

Изображение сигнала

Цифровая фильтрация сигнала в 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;  % всё вместе

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

Настройка matlab для генерации C/C++ кода из m файлов в Windows

Matlab программа с невероятными возможностями, но как и любое прикладное приложение, рано или поздно программу созданную в матлабе нужно переписать для использования в вашем приложении. 

Я играю цифровыми фильтрами. При работе с ними нужно использовать свёртку или преобразование Фурье и прочие специфические функции. Естественно писать их с нуля смысла особого нет, но и искать вам придётся скорее всего долго..

И тут апогеем творчества MathWorks стал Matlab Coder который позволяет сгенерировать вам код на C/C++ из функции матлаба.

Проверка выполнения теоремы Парсеваля при помощи Matlab

Под теоремой Парсеваля понимают: сумма квадрата функции равна сумме квадрата преобразования.

Т.е.

В дискретном виде теорему записывают таким образом:

Зададим количество отсчётов:

N = 100; 

 Заполним случайными числами:

x = randn(1,N); 

 Посчитаем сумму квадратов:

Анализ и синтез фильтров с конечной импульсной характеристикой в Matlab

Фильтры с конечной импульсной характеристикой имеют структурную форму вида:

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

Приступим к синтезу и анализу характеристик КИХ фильтра в пакете matlab.

Будем синтезировать фильтр нижних частот с частотой среза 0.2 (частота относительно частоты дискретизации).

Расчёт дисткретной свёртки и частотных характеристик в Matlab

1. Вводим значения отсчетов импульсной характеристики

>> h=[3 4 8];

2. Вводим значения отсчетов сигнала:

>> x=[3 2 -2 1 -1];

3. Вычисляем линейную свертку:

>> y1=conv(h,x)
y1 = 9 18 26 11 -15 4 -8

4. Определяем общий период для вычисления циклической свертки:

Исследование эффектов дискретизации и квантования. Теорема Котельникова на пальцах

В наше время уже невозможно представить мир без цифровой электроники. Каждый из нас имеет персональный компьютер, телефон и ещё кучу устройств, работа которых невозможна без цифровых сигналов. Но и без аналогового мира не обойтись. Мы постоянно должны учитывать температуру, влажность окружающей среди и ещё кучу аналоговых величин. Следовательно приходится преобразовывать аналоговые сигналы в цифровые и назад.
Процесс преобразования аналогового сигнала в цифровой тесно связан с квантованием сигнала по уровню и времени.