Вычислить БПФ по оси частот, когда сигнал находится в rawData в Matlab

У меня сигнал с частотой 10 МГц с частотой дискретизации 100 мс / с. Как вычислить FFT в Matlab с точки зрения частоты, когда мой сигнал находится в rawData (длина этого rawData равна 100000), также

  1. какой должна быть оптимальная длина NFFT (т. е. от какого фактора зависит NFFT)
  2. почему моя амплитуда (ось Y) меняется с NFFT
  3. Какая разница между NFFT, N и L. Как вычислить длину сигнала
  4. Как отделить шум и сигнал от одного сигнала (который находится в rawData)

Вот мой код,

t=(1:40);
f=10e6;
fs=100e6;

NFFT=1024;

y=abs(rawData(:1000,2));
X=abs(fft(y,NFFT));
f=[-fs/2:fs/NFFT:(fs/2-fs/NFFT)];

subplot(1,1,1);
semilogy(f(513:1024),X(513:1024));
axis([0 10e6 0 10]);

0

Решение

Как вы можете найти соответствующие частоты в другой пост, Я просто отвечу на другие ваши вопросы:

  1. Включение всех ваших данных в большинстве случаев является лучшим вариантом. fft просто усекает ваши входные данные до запрошенной длины, что, вероятно, не то, что вы хотите. Если вам известен период вашего входного сингла, вы можете укоротить его до целого числа периодов. Если вы этого не знаете, окно (например, Ханнинг) может быть интересным.

  2. Если вы измените NFFT, вы используете больше данных в расчете БПФ, что может слегка изменить амплитуду для данной частоты. Вы также рассчитываете амплитуду на нескольких частотах между 0 а также Fs/2 (половина частоты дискретизации).

  3. Вопрос не ясен, просьба дать определение N а также L,

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]