Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: формирование сигнала с заданным спектром
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
cerg19
Всем доброго времени суток.
Встала задача сформировать сигнал с заданным спектром:

Нажмите для просмотра прикрепленного файла

Я всегда думал, что спектры симметричны относительно DC. А тут они не симметричны, да и ещё отдельная гармоника на частоте -225кГц вводит в ступор.
Подскажите пожалуйста как можно сформировать сигнал с таким спектром. Или данный спектр в корне не правильный и не реализуем?
STAR_IK
Переходите к комплексной форме сигнала, тогда получится сделать спектр сигнала асиметричным относительно нуля. В этом случае каждый тон будет представлять собой комплексную экспаненту вида exp(jwt) = cos(wt)+j*sin(wt)
thermit
Цитата
cerg19:
Подскажите пожалуйста как можно сформировать сигнал с таким спектром. Или данный спектр в корне не правильный и не реализуем?


Конечно же все реализуемо. Просто сигнал будет комплексным. (Амплитудный спектр вещественного сигнала симметричен относительно 0).

Код
x=exp(1j*2*pi*50/1000*(0:9999))+exp(1j*2*pi*200/1000*(0:9999))+exp(1j*2*pi*250/1000*(0:9999))+exp(-1j*2*pi*225/1000*(0:9999));
cerg19
thermit, спасибо за код.
Попробовал в matlab. Сделал plot(abs(fft(real(x)))) и на спектре видно, что он тоже симметричен
Нажмите для просмотра прикрепленного файла
что я делаю не так?
STAR_IK
Во-первых, уберите real. У действительного сигнала не может быть асиметричный спектр!!! Во-вторых, если хотите увидеть спектр, какой он у вас есть, то нужно повернуть половинки результата преобразования fft. Код будет выглядеть следующим образом: plot(abs(fftshift(fft(x))))
thermit
Цитата
cerg19:
Попробовал в matlab. Сделал plot(abs(fft(real(x)))) и на спектре видно, что он тоже симметричен


Цитата
thermit:
Просто сигнал будет комплексным. (Амплитудный спектр вещественного сигнала симметричен относительно 0).
Lmx2315
QUOTE (cerg19 @ Mar 21 2013, 10:51) *
что я делаю не так?

..я конечно не математик, но помоему вы не использовали комплексную форму сигнала.
V_G
ТС осталось определиться с термином "сигнал".
Если имеется в виду традиционно-электронно-аналоговое определение как временнОе представление какого-то одного процесса, то задача невыполнима, реальный сигнал всегда имеет симметричный спектр.
"Комплексный сигнал" - математическая абстракция, в обычной жизни это 2 разных сигнала.
Xenia
Цитата(cerg19 @ Mar 21 2013, 10:11) *
Встала задача сформировать сигнал с заданным спектром:
...
Подскажите пожалуйста как можно сформировать сигнал с таким спектром. Или данный спектр в корне не правильный и не реализуем?


Если вам нужно сформировать сигнал из помеси малого числа чистых гармоник, то проще всего не связываться с FFT, а построить по точкам в лоб - т.е. сложить три синусоиды (50 Гц, 200 Гц и 250 Гц). Причем, вычислять их вклады можно одновременно с суммированием.
Что-то вроде этого:
for(int i=0; i<N; i++) A[i] = sin(2*M_PI*50*i/N) + sin(2*M_PI*200*i/N) + sin(2*M_PI*250*i/N);
thermit
про генерацию через ффт тут никто и не говорил.
Aner
ага, по точкам ...в лоб
Вы еще не забудьте про 2,3, и тд ... гармоники этих сигналов и их компинационные.
TRILLER
Цитата(Aner @ Mar 23 2013, 01:03) *
ага, по точкам ...в лоб
Вы еще не забудьте про 2,3, и тд ... гармоники этих сигналов и их компинационные.

Эмм.. Может чего-то недопонял, но откуда появятся комбинационные составляющие при суммировании?
cerg19
Всем спасибо за ответы.
Мне необходимо было также сместить этот спектр на центральную частоту 97,9МГц.
Всё это я выполнил при помощи схемы:

Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.