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

Matlab 频谱图中如何设置频率刻度

Matlab 频谱图中如何设置频率刻度(横坐标)

1、概述

       时域信号经FFT 变换后得到了频谱,在作图时还必须设置正确的频率刻度,这样才能从图中得到正确的结果。下面来介绍如何设置正确的频率刻度。

2、案例分析

有一个余弦信号,信号频率为30Hz,采样频率为100Hz,信号长128,在FFT后做频谱图。

clear; clc; close all;fs=128;                         % 采样频率
N=128;                          % 信号长度
t=(0:N-1)/fs;                   % 时间序列
x=cos(2*pi*30*t);               % 余弦信号
y=fft(x,N);                     % FFTf = linspace(0,64,64); % 设置频率刻度 
stem(f,abs(y(1:64)),'k'); % 作图
xlim([25 35]);
xlabel('频率(Hz)'); ylabel('幅值');
title('(a)幅频曲线');

       频谱分析后,最大值谱线应该在 30Hz 处。从图中可以看出,最大值谱线在 30Hz 和 31Hz 之间,这表明信号不是 30Hz  的余弦信号,其频率在 30Hz 与 31Hz 之间,这明显不符合初始设置。发生这种错误的原因是在频率刻度的设置错误。

3、解决方法

当N 为偶数和 N为奇数时,频率刻度的设置方法稍有不同,如下图所示:

(1)当 N 为偶数时,频率刻度设置方法一

       信号长为 N ,采样频率为 fs,在 DFT(FFT)以后信号的频率在 \left ( -\frac{f_{s}}{N} , \frac{f_{s}}{N} \right )之间,谱线之间的频率间隔为:\Delta f = \frac{f_{s}}{N} = \frac{1}{NT_{S}}

式中:T_{s} 是采样周期。频率刻度从0开始,最大频率为 \frac{f_{s}}{2}  。频率刻度简单设置如图2-2-2(a)所示。

 

clear; clc; close all;fs=128;                         % 采样频率
N=128;                          % 信号长度
t=(0:N-1)/fs;                   % 时间序列
x=cos(2*pi*30*t);               % 余弦信号
y=fft(x,N);                     % FFT% f = linspace(0,64,64); % 设置频率刻度 
% stem(f,abs(y(1:64)),'k'); % 作图
% xlim([25 35]);
% xlabel('频率(Hz)'); ylabel('幅值');
% title('(a)幅频曲线');figure('Name','正确的频率刻度')
freq=(0:N/2)*fs/N;              % 按式(2-2-6c)设置正频率刻度 
% 作图
stem(freq,abs(y(1:N/2+1)),'k')
xlabel('频率(Hz)'); ylabel('幅值');
title('(b) 只有正频率刻度')
xlim([25 35]);
set(gcf,'color','w');

       由图可知,图中频率刻度,只用了正频率来表示,最大值的谱线在 30Hz 处,与信号设置频率一致。

 

http://www.lryc.cn/news/133295.html

相关文章:

  • 在线转换器有哪些优势?在线Word转PDF操作分享
  • 2023国赛数学建模A题思路模型代码汇总 高教社杯
  • vue3如何批量设置动态ref
  • Android Studio run app 设置 release 模式
  • 【SA8295P 源码分析】41 - SA8295所有镜像位置、拷贝脚本、生成QFIL包
  • 【Redis】Redisson分布式锁原理与使用
  • Segment Anything论文阅读笔记
  • Python入门教程 | Python 基础语法
  • JAMstack架构:快速构建安全、高性能的现代应用
  • Web会话技术
  • hbuilderx打包苹果证书获取步骤
  • JAVA下载Excel文件之后无法打开,提示损坏
  • 复合 类型
  • Practices11|41. 缺失的第一个正数(数组)、73. 矩阵置零(矩阵)
  • 深入完整的带你了解java对象的比较
  • ubuntu20.04升级GLIBC高版本方法,解决:version `GLIBC_2.34‘ not found
  • 日产将使用东风纯电平台?官方回应:不是日产品牌
  • cdh6.3.2 Flink On Yarn taskmanager任务分配倾斜问题的解决办法
  • 改进YOLO系列:3.添加SOCA注意力机制
  • SpringBoot整合Mybatis Plus——条件构造器Wrapper
  • while循环语句
  • 【ARM 嵌入式 编译系列 11 -- GCC __attribute__((packed))详细介绍】
  • Pytorch-day06-复杂模型构建-checkpoint
  • windows电脑系统自带的画图工具如何实现自由拼图
  • 直线模组的运行注意事项
  • 记录每日LeetCode 2236. 判断根结点是否等于子结点之和 Java实现
  • 使用PHP生成MySQL数据字典
  • React(7)
  • MySQL8.0新特性之用户管理
  • 强推9个研究生必备的免费论文下载网站