本帖最后由 Jack315 于 2017-5-14 20:57 编辑
信号频谱分析供 LZ 参考:
频谱分析的 Matlab 代码:
- f = 400; % 信号频率:400Hz 。
- Um = 1; % 信号幅度:1V 。
- n = 5; % 信号周期数。
- tn = n / f; % 信号时间宽度。
- fs = 20000; % 采样频率:20KHz 。
- ts = 1 / fs; % 采样周期。
- N = 4096; % FFT 长度。
- t = 0 : ts : tn; % 时间。
- % 信号。
- ft = Um * sin(2 * pi * f * t);
- % 信号摆幅。
- ft_amp = max(ft) - min(ft);
- % 信号图上界限。
- ft_ul = max(ft) + 0.1 * ft_amp;
- % 信号图下界限。
- ft_ll = min(ft) - 0.1 * ft_amp;
- % 绘制信号图。
- subplot(3, 1, 1);
- plot(t,ft);
- grid on;
- axis([0 tn ft_ll ft_ul]);
- xlabel('t(秒)'),ylabel('U(伏)');
- title('原始信号 (f = 400 Hz)');
- % 绘制抽样信号图。
- subplot(3, 1, 2);
- stem(t, ft, 'filled', 'MarkerSize', 3);
- grid on;
- axis([0 tn ft_ll ft_ul]);
- xlabel('t(秒)'),ylabel('U(伏)');
- title('采样信号 (fs = 20 KHz)');
- Fw = fft(ft, N); % 傅立叶变换。
- % 绘制幅度频谱图。
- k = 0 : N - 1;
- Arg = abs(Fw);
- Max = max(Arg);
- subplot(3, 1, 3);
- plot(k, Arg);
- grid on;
- axis([0 N * 1.1 -0.1 * Max 1.1 * Max]);
- title('采样信号幅度频谱 (4096 点傅立叶变换)');
|