1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【MATLAB】FFT算法计算幅频谱和相位谱

【MATLAB】FFT算法计算幅频谱和相位谱

时间:2023-05-30 05:33:19

相关推荐

【MATLAB】FFT算法计算幅频谱和相位谱

以有限长序列xn=[1,0.5,0,0.5,1,1,0 ]为例,计算DFT和IDFT、幅度谱和相位谱。

程序如下:

% 定义序列和采样频率Fsxn = [1, 0.5, 0, 0.5, 1, 1, 0];Fs = 20;% 定义不同的N值N_values = [8, 32, 64];% 循环计算DFT和IDFTfor i = 1:length(N_values)N = N_values(i);% 计算DFT和IDFTXk = fft(xn, N);xn_restored = ifft(Xk);% 计算幅度频谱和相位频谱magnitude_spectrum = abs(Xk);phase_spectrum = angle(Xk);% 绘制图像subplot(length(N_values), 3, (i-1)*3+1);stem(0:N-1, xn);xlabel('n');ylabel('x[n]');title(['N=', num2str(N), ': Time-domain sequence']);subplot(length(N_values), 3, (i-1)*3+2);plot((0:N-1) * Fs/N - Fs/2, fftshift(magnitude_spectrum));xlabel('Frequency (Hz)');ylabel('|X(f)|');title(['Magnitude spectrum of X(k), N=', num2str(N)]);subplot(length(N_values), 3, (i-1)*3+3);plot((0:N-1) * Fs/N - Fs/2, fftshift(phase_spectrum));xlabel('Frequency (Hz)');ylabel('\angle X(f)');title(['Phase spectrum of X(k), N=', num2str(N)]);end

运行上述程序,可以得到三个子图,其中每个子图包含时域序列、幅度频谱和相位频谱的三张图。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。