[an error occurred while processing this directive]
|
Я смоделировал ситуацию (может и гипотетическую) где все получается, и намекнул, что отсюда плясать и надо (то есть найти тот шаг от моего кода к Ващему, где эта прелесть теряется).
Во-первых, в первом моем ответе хорошо то, что частоты попадают в сетку ДПФ.
Во-вторых, во втором моем ответе, рекомендующем увеличить длину наблюдения опять хороший результат.
Почему?
Я тогда сам еще не знал.
Внимательно посмотрите на выходной сигнал - sk - во временной области
Функция upfirdn дает на выходе сигнал аналогичный функции conv, те
последние length(b)-1 отсчеты расчитаны при помощи добавлени виртуальных нулей к сигналу s. (Спектр сигнала такого сигнала заметно шире)
Вот Вы и получили растекание спектра на выходе.
Или нужно отрезать эти отсчеты
или вместо строчки
sk=upfirdn(s,b,1,1);
использовать filter
sk=filter(b,1,s);
Она не расчитывает этот часто вредный хвост
E-mail: info@telesys.ru