马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
matlab-help-fft有个例子
Convert a Gaussian pulse from the time domain to the frequency domain. Define signal parameters and a Gaussian pulse, X. Fs = 100; % Sampling frequencyt = -0.5:1/Fs:0.5; % Time vectorL = length(t); % Signal lengthX = 1/(4*sqrt(2*pi*0.01))*(exp(-t.^2/(2*0.01)));
Plot the pulse in the time domain. plot(t,X)title('Gaussian Pulse in Time Domain')xlabel('Time (t)')ylabel('X(t)')
To use the fft function to convert the signal to the frequency domain, first identify a new input length that is the next power of 2 from the original signal length. This will pad the signal X with trailing zeros in order to improve the performance of fft. n = 2^nextpow2(L);
Convert the Gaussian pulse to the frequency domain. Y = fft(X,n);
Define the frequency domain and plot the unique frequencies. f = Fs*(0:(n/2))/n;P = abs(Y/n);plot(f,P(1:n/2+1))title('Gaussian Pulse in Frequency Domain')xlabel('Frequency (f)')ylabel('|P(f)|')
为什么P=abs(Y/n),我觉得应该是P=2*abs(Y/n)? 试了一下,假如函数y=20*sin(2*pi*0.0006*t)+10*cos(2*pi*0.001*t),求得的振幅确实少了一倍啊???
|