当前位置: 首页 > news >正文

(42)MATLAB中使用fftshift绘制以零为中心的功率谱

文章目录

  • 前言
  • 一、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|')

二、仿真结果画图

信号的时域波形图:

在这里插入图片描述

零频分量在频谱起点的频谱图:

在这里插入图片描述
零频分量在功率谱的起点位置,并不够直观。下面给出零频分量在功率谱的中心位置的功率谱谱。

绘制以零为中心的功率谱:

在这里插入图片描述



http://www.mrgr.cn/news/53346.html

相关文章:

  • VideoCLIP-XL:推进视频CLIP模型对长描述的理解
  • 数据结构与算法 - 树 #数的概念 #二叉树 #堆 - 堆的实现/堆排序/TOP-K问题
  • 韩信走马分油c++
  • java缓存技术介绍
  • 如何实现采购数字化?
  • C语言笔记20
  • IO编程--多线程实现文件拷贝
  • 爬虫逆向-js进阶(续写,搭建网站)
  • 刘诗诗亮相 VOGUE 时尚盛典,三套造型出尘绝伦,美丽再惊艳众人
  • 业务诊断简介
  • [强网杯 2019]随便注1
  • 实验21:红外遥控实验
  • 通过比较list与vector在简单模拟实现时的不同进一步理解STL的底层
  • Hikyuu教程 | 滚动回测与滚动寻优系统
  • django5入门【02】创建新的django程序
  • win11 虚拟桌面切换后任务栏图标消失解决【中文互联网首发】
  • 强化学习与深度强化学习:深入解析与代码实现
  • 【MySQL】MySQL的简单了解详解SQL分类数据库的操纵方法
  • I\O进程线程(Day30)
  • 宽表和窄表