本帖最后由 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 点傅立叶变换)');
SamplingSIN.rar
(634 Bytes)
|