Как рассчитать ОСШ сигналов в MATLAB?

Я столкнулся с очень простой, но фундаментальной проблемой при расчете SNR:

Есть несколько сигналов:

  • S1 = оригинальный и чистый сигнал без шума.

  • N1 = белый гауссовский шум, который будет добавлен к S1.

  • S2 = S1 + N1 (зашумленный сигнал перед выполнением алгоритма шумоподавления)

  • S3 = сигнал с шумоподавлением (после выполнения алгоритма шумоподавления)

  • N2 = S3 - S1 (количество шума после выполнения алгоритма шумоподавления)

Теперь я хочу сравнить SNR до и после выполнения алгоритма шумоподавления.

  1. Какие сигналы следует учитывать для SNR_before!? S1/N1 или S2/N1?

  2. Какие сигналы следует учитывать для SNR_after!? S3/N1 или S3/N2?

  3. Какие команды или функции следует использовать в MATLAB для вычисления SNR_before и SNR_after?

Миллиард благодарностей за потраченное время на помощь мне.


person Omid1989    schedule 25.04.2013    source источник
comment
О нет, не факториал!! Извините, что поставил столько отметок!! Я просто имел в виду? больше ничего !! ;)   -  person Omid1989    schedule 25.04.2013


Ответы (1)


Что я знаю о расчете SNR раньше:

snrBeforeNoise = среднее (сигнал .^ 2) / среднее (шум .^ 2);

и про snr после:

остаточный_шум = сигнал - шум_редуцированный_сигнал; snr_after = среднее (сигнал .^ 2) / среднее (остаточный_шум .^ 2);

person Danny    schedule 25.04.2013
comment
Спасибо Дэнни за ваш ответ. Но вот в моем случае у меня есть несколько вариантов, которые меня смущают! Перед алгоритмом, который я должен рассмотреть: S1/N1 или S2/N1? И после алгоритма я должен рассматривать S3/N1 или S3/N2? - person Omid1989; 25.04.2013
comment
Кстати, для вычисления ОСШ мы должны вычислить мощность сигнала, верно!? значит правильно !? - person Omid1989; 25.04.2013
comment
для ранее это s2/s1, потому что s2 — это ваш сигнал с включенным шумом и до шумоподавления. - person Danny; 25.04.2013
comment
Более точным было бы вычислить s1/n1, но в большинстве случаев у вас нет s1, только s2. Однако если у вас высокое отношение сигнал-шум, им можно пренебречь, и вы всегда можете его исправить, поскольку s2/n1 равно s1/n1 + 1 (в линейных вычислениях). - person Ariel; 25.04.2013
comment
Спасибо вакха. Я обязательно посчитаю SNR с помощью 10*log10(), но только после того, как пойму, какой из них выбрать!! - person Omid1989; 25.04.2013
comment
Спасибо Ариэль. На самом деле у меня есть доступ как к S1, так и к S2. Однако я не уверен, что S1/N1 будет правильным; потому что S1 не содержит шума. Ты уверен в этом !? - person Omid1989; 25.04.2013
comment
Кстати, есть ли у кого-нибудь мнение по поводу SNR_after!? Это меня больше сбивает с толку, чем предыдущее !! - person Omid1989; 25.04.2013