文章目录
- 前言
- 一、MATLAB代码
- 二、仿真结果画图
前言
在分析信号的频率分量时,将零频分量平移到频谱中心会很有帮助。本例给出绘制以零为中心的功率谱的方法。
一、MATLAB代码
代码如下:
f = 1; % 余弦波的振荡频率,简称频率
fs = 32; % 数字信号的采样频率(sampling frequency ),简称采样率
Ts = 1/fs; % 采样周期,也即采样值的时间间隔
L = 320; % 一个采样值称为一个sample,L为sample的个数
t = (0:L-1)*Ts; % 时间向量
x = cos(2*pi*f*t); % 生成余弦波x% 画出生成余弦波的时域波形
figure()
plot(t,x,'LineWidth',1.5)
% title('余弦信号的时域波形')
title(['余弦波的时域波形(f=',num2str(f),'Hz,fs=',num2str(fs),' samples/s)'])
grid on
xlabel('t/s')
ylabel('cos(2*pi*f*t)')%% 计算余弦波信号功率谱,并绘制以零频为中心的功率谱。
% 计算余弦波信号功率谱
N = length(x);
X = fft(x, N); % 计算时域信号x的傅里叶变换
f = (0:N-1)*(fs/N); % 频率范围。频率刻度从0开始,0对应直流分量
power = abs(X).^2/N; % 功率% 绘制以零频为起点的功率谱
figure()
plot(f,power,'LineWidth',1)
grid on
title('余弦信号的功率谱(零频在起点)')
xlabel('频率(Hz)')
ylabel('功率谱幅度|Y|')% 平移负频分量
Y = fftshift(X); % X的第1-160个值是直流分量到fs/2-fs/N的频率分量
powershift = abs(Y).^2/N; % 以0为中心的功率
fshift = (-N/2:N/2-1)*(fs/N); % 以0为中心的频率范围% 绘制以零频为中心的功率谱
figure()
plot(fshift,powershift,'LineWidth',1)
grid on
title('余弦信号的功率谱(零频在中心)')
xlabel('频率(Hz)')
ylabel('功率谱幅度|Y|')
二、仿真结果画图
信号的时域波形图:
零频分量在频谱起点的频谱图:
零频分量在功率谱的起点位置,并不够直观。下面给出零频分量在功率谱的中心位置的功率谱谱。
绘制以零为中心的功率谱: