реклама на сайте
подробности

 
 
> Генератор сигналов с шумом, в Matlab
EKirshin
сообщение Jul 28 2008, 16:52
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 2-10-06
Из: Москва
Пользователь №: 20 904



Осваиваю DSP в Matlab.

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

Основной вопрос - как правильно рассчитать амплитуду генерируемого шума, чтобы потом на спектре увидеть ровно тот самый SNR, что задавался в качестве параметра.
Пытаясь создать такую функцию, я столкнулся со следующими проблемами/нюансами:

1. Расчёт амплитуды генерируемого шума.
2. Точное построение спектра сигнала. Как учитывать следующие факторы:
- уменьшение энергии сигнала при домножении на оконную функцию
- нормализация спектра учитывая длину выборки (как сохранить и нужно ли энергию сигнала). Необходимо ли учитывать теорему Парсеваля?
- как учитывать различие комплексного и вещественного сигналов? Например, понятно, что если сигнал вещественный, то спектр его будет симметричным. Поэтому практически все примеры выводят только половину спектра, но энергия-то содержится в обоих частях спектра?
- каково влияние числа точек FFT на уровень шума в спектре: 10log10(N/2) либо 10log10(sqrt(N))?

И уже совсем примитивный вопрос: никак не удаётся сгенерить сигнал размахом в 1 и увидеть его на спектре на уровне 0db.

Разъясните, пожалуйста, эти вопросы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
shf_05
сообщение Jul 28 2008, 18:12
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 22-04-08
Из: г. Екатеринбург
Пользователь №: 36 992



ну по порядку
1 амплитуду шума рассчитывать не надо- когда исп-те ф-ю randn, то из ее хелпа, видно, что она формирует сигнал с нулевым МО и ед. дисперсией, для изменения дисперсии просто умножайте ее выход на необх вам дисперсию . а если так уж и надо измерить, то есть ф-ии вычисяющие дисперсию и проч. хар-ки сигнала
std, cov и тп (см statisicы toolbox)
2 окном одинаково ослабляется и сигнал и шум
3 если сигнал комплексный, то пусть и шум будет комплексный noise= hilbert(noise); а если вещественный коль спектр симметричный, то выводится его половина, можно и весь вывести.
4 для построения спектральных хар-к используйте ф-ии типа periodogramm, pburg и т.п.
от числа точек в fft уровень шума поменяться не может, при увеличении числа точек в fft без увеличения числа отчетов что-либо практически полезное вряд ли удастся (см статью fft zoom на форуме), а так можно только попытаться уменьшить эффект "растекания" спектров, что достигается вдобавок окнами
5 если генерировать сигнал с размахом в 1, то это должен быть сигнал одной! частоты, тогда можно пытаться что-то увидеть, если это не синус, а суммас синусов или шум, то этого не сделать в принципе

PS почитайте немного лекции про бпф, теорию случ. сигналов, а еще лучше совместите это с чтением чего нить типа "обработка сигналов в матлаб" или "цос в матлаб". это не издевка и не шутка, а чисто житейский совет))) ибо сам я задавал подобные вопросы, задаю и буду задавать, но приоритет должен быть у литературы.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 08:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.0154 секунд с 7
ELECTRONIX ©2004-2016