时域数据转化频域数据,样例代码

news/2025/2/21 20:11:26/文章来源:https://www.cnblogs.com/wenluderen/p/18725787
% 清除工作区变量、关闭所有图形窗口、清空命令行
clear; close all; clc;%% 参数设置
Fs = 3200;          % 采样频率 3200 Hz
N = 10000;          % 数据点总数 10000
t = (0:N-1)/Fs;     % 时间向量(用于生成示例信号)%% 生成示例信号(用户应替换为自己的数据)
% 合成信号:包含10Hz和100Hz的正弦波 + 高斯噪声
f1 = 10;            % 第一个频率分量 10Hz
f2 = 100;           % 第二个频率分量 100Hz
data = 0.5*sin(2*pi*f1*t) + sin(2*pi*f2*t) + 0.2*randn(size(t));%% 预处理(可选)
data = data - mean(data);   % 去除直流分量(中心化处理)%% 快速傅里叶变换(FFT)
Y = fft(data);       % 执行FFT,结果Y是复数数组
P2 = abs(Y/N);       % 计算双边频谱幅度,并归一化%% 转换为单边频谱
P1 = P2(1:N/2+1);    % 取前半部分频谱(0Hz ~ Fs/2)
P1(2:end-1) = 2*P1(2:end-1); % 幅度修正(除直流和Nyquist频率外均×2)%% 构建频率轴
f = Fs*(0:(N/2))/N;  % 创建频率向量(0Hz ~ Fs/2)%% 绘制时域信号
figure;
subplot(2,1,1)
plot(t, data)
title('时域信号')
xlabel('时间 (s)')
ylabel('幅度')
xlim([0 0.3])        % 显示前0.3秒数据
grid on;%% 绘制频域信号
subplot(2,1,2)
plot(f, P1) 
title('单边幅度频谱')
xlabel('频率 (Hz)')
ylabel('幅度')
grid on;
xlim([0 Fs/2])       % 显示完整频率范围%% 峰值标注示例(可选)
[~, locs] = findpeaks(P1, 'SortStr','descend', 'NPeaks',2); % 找前两个峰值
hold on;
plot(f(locs), P1(locs), 'ro'); % 标出峰值点
text(f(locs(1))+5, P1(locs(1)), [num2str(f(locs(1)), '%.1f'), ' Hz']);
text(f(locs(2))+5, P1(locs(2)), [num2str(f(locs(2)), '%.1f'), ' Hz']);
hold off;

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887033.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#中GDI+使用贝塞尔曲线画一朵云

主要是路径的计算 先得到路径if (value.Width > 0 && value.Height > 0) {GraphicsPath.AddBezier(new PointF(RectangleF.Left + RectangleF.Width * 0.1f, RectangleF.Top + RectangleF.Height * 0.55f),new PointF(RectangleF.Left + RectangleF.Width * 0.1f…

如何让你的ida 地址就是RVA

如何让你的ida 地址就是RVA 原理:首先软件进入ida中的时候,其实就相当于把应用程序载入了内存中,RVA其实就是虚拟的便宜地址,也就是在内存中的地址,所以这里的RVA就是在ida中看到的地址-Imagebase Imagebase 其实就是基址。所以我们只需要把imagebase 设置为0即可拿到我…

c#GDI+实现类似油门踏板效果的自定义控件

先看效果图下面是代码protected override void OnPaint(PaintEventArgs e) {e.Graphics.SetGDIHigh();var rect = new Rectangle(0, 0, this.Width, this.Height);// 创建变换矩阵Matrix transformMatrix = new Matrix();// 使用平行四边形的方法近似梯形transformMatrix.Shear…

NocoBase 本周更新汇总:支持全局和批量数据触发自定义操作事件

本周更新包括:支持全局和批量数据触发自定义操作事件,支持数据表预置字段扩展等。汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。main :截止目前最稳定的版本,推荐安装此版本。 next:包含…

如何解决远程运维文件传输过程中,面临的安全与效率难题?

堡垒机是一种位于特定网络环境中,用于保障网络和数据安全的设备或系统。它通过集中管理和控制所有远程访问请求,确保每一次操作都经过严格的认证和授权。当用户采用堡垒机开展远程运维和远程访问控制时,需要将安装包、升级包、脚本、工具软件等文件资源,从外部非受控区转移…

20250220

1. 橡胶参考昨晚策略 市场休息 我们也休息。 2. 花生有个多5浪的机会

跨网文件传输的安全性如何保障?5大防护策略在这里

一、跨网文件传输的安全风险有哪些? 1、数据泄露风险 跨网数据交换时,敏感信息可能会在没有足够保护的情况下被泄露,尤其是在内网向外网传输(出网)和外网向内网传输(入网)的过程中。内部人员可能因为疏忽或恶意行为导致数据泄露,跨网数据交换系统需要能够有效防止内部泄…

Oracle-行结构转化为列结构

转换前:转换后: SQL语句:SELECT JX,ZPX,NUM FROM TABLE UNPIVOT(NUMFOR zpxIN (A AS 1,B AS 2,C AS 3)) ORDER BY JX, ZPX;

为什么Raft算法是分布式系统的首选?

背景 当今的数据中心和应用程序在高度动态的环境中运行,为了应对高度动态的环境,它们通过额外的服务器进行横向扩展,并且根据需求进行扩展和收缩。同时,服务器和网络故障也很常见。 因此,系统必须在正常操作期间处理服务器的上下线。它们必须对变故做出反应并在几秒钟内自…

深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异

深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异数据库统计信息的作用 在数据库系统中,查询优化在决定应用程序性能方面起着至关重要的作用。 高效的查询依赖于最新的数据库统计信息,这些统计信息帮助数据库的查询优化器选择最佳的执行计划。在PostgreSQL和M…

SynchronousQueue底层实现原理剖

一、SynchronousQueue底层实现原理剖 SynchronousQueue(同步移交队列),队列长度为0。作用就是一个线程往队列放数据的时候,必须等待另一个线程从队列中取走数据。同样,从队列中取数据的时候,必须等待另一个线程往队列中放数据 二、SynchronousQueue用法 先看一个Synchron…

[2025.2.18 JavaWeb学习]Mybatis

入门MyBatis是一款优秀的持久层(dao)框架,用于简化JDBC的开发 使用:IDEA创建SpringBoot模块,而后勾选MySQL Driver和MyBatis Framework pom.xml引入了mybatis-spring-boot-starter起步依赖、com.mysql依赖包、org.springframework.boot单元测试依赖 pojo中,创建实体对象,…