文章目录
- 前言
- 一、仿真代码
- 二、仿真结果画图
前言
本文首先使用MATLAB生成一段余弦信号,然后对其进行FFT变换,首先计算出信号的双边谱,然后在双边谱的基础上计算出信号的单边谱。
一、仿真代码
代码如下:
%% 生成余弦波
% 指定信号的参数,频率1Hz,采样频率为16Hz,信号持续时间为2秒(32个samples)。
f = 1; % 余弦波的振荡频率,简称频率
fs = 16; % 数字信号的采样频率(sampling frequency ),简称采样率
Ts = 1/fs; % 采样周期,也即采样值的时间间隔
L = 32; % 一个采样值称为一个sample,L为sample的个数
t = (0:L-1)*Ts; % 时间向量
x = cos(2*pi*f*t); % 生成余弦波x
% 画出生成余弦波的时域波形
figure()
plot(t,x,'LineWidth',1.5)
title(['余弦波的时域波形(f=',num2str(f),'Hz,fs=',num2str(fs),' samples/s)'])
grid on
xlabel('t/s')
ylabel('cos(2*pi*f*t)')
%% 双边谱与单边谱
N = L; % N=32
Y = fft(x,N); % 信号的傅里叶变换
% 计算信号的双边幅度频谱
P2 = abs(Y/L);
% 信号的双边幅度频谱画图,x轴为频率
figure()
stem(0:(fs/N):(fs-fs/N),P2(1:N),'LineWidth',1.5)
grid on
title(['余弦波的双边幅度频谱(f=',num2str(f),'Hz,fs=',num2str(fs),' samples/s,','N=',num2str(N),')'])
xlabel('频率/Hz')
ylabel('幅度|Y(n)|')
%% 信号的单边幅度频谱
% 计算信号的单边幅度频谱
P1 = P2(1:N/2+1); % 直流到fs/2的频谱分量
P1(2:end-1) = 2*P1(2:end-1);
figure()
stem(0:(fs/N):(fs/2),P1(1:N/2+1),'LineWidth',1.5)
grid on
title(['余弦波的单边幅度频谱(f=',num2str(f),'Hz,fs=',num2str(fs),' samples/s,','N=',num2str(N),')'])
xlabel('频率(Hz)')
ylabel('频谱幅度|Y|')
二、仿真结果画图
时域波形图:
双边谱:
单边谱: