дискретное преобразование Фурье в Matlab для данных? - PullRequest
1 голос
/ 02 апреля 2012

У меня есть некоторые данные во временной области, временное разделение между каждым элементом - dt, а мои данные - от 0 до N * dt сек, я хочу видеть спектр своих данных от 0,6e15 Гц до 1e15 Гц, что мне делать

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

скажем, у вас уже есть время х.

x%is given
fmin = 1e15;
fmax = 6*fmin;
numOfSamples = length(x);
f = linspace(fmin,fmax,numOfSamples);
t = 1 : numOfSamples;
y=fft(x);
plot(fftshift(y));
0 голосов
/ 07 апреля 2012

Вот код, который мне нужен:

NT=10000;%size of data that I have
ddx=2e-9;
dt=ddx/(3e8);%time separation between each element
i=sqrt(-1);
NFREQS=1000;%size of frequency array
lambdai=150e-9;
lambdaf=500e-9;
freqi=3e8/lambdai;%lower limit of frequency
freqf=3e8/lambdaf;%upper limit of frequency
freq=zeros(1,NFREQS);
for j=1:NFREQS
freq(j)=freqi-j*(freqi-freqf)/NFREQS;%frequency array
end
arg=2*pi*freq*dt;
lambda=linspace(lambdai,lambdaf,NFREQS);
    for n=1:NFREQS
    for j=1:NT
     Exf(n)=Exf(n)+Ex(j)*exp(-i*arg(n)*j);%Ex the data that I have and Exf is fft of it
    end
    end

plot(lambda,real(Epsilon));

Этот код вычисляет преобразование Фурье для Ex в диапазоне 150e-9m t0 500e-9m

...