MATLAB应用1——MATLAB傅里叶变换函数封装

news2024/11/20 23:28:39

 

 主程序:

%
ex=importdata('data3.txt');
tx = regexp(ex{1}, '\s+', 'split');%按照空格分隔字符串,成为单个cell
yx=str2double(tx);
plot(yx);
ww=yx(2500:9000)-2055;
Fyz_fft(ww,1000);

傅里叶封装函数:

function Fyz_fft(y,Fs)

% Demon:
% Fs = 128;       % 采样频率
% T = 1/Fs;       % 采样时间
% L = 256;        % 信号长度
% t = (0:L-1)*T; % 时间
% y = 5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*cos(2*pi*40*t - 90*pi/180);   %cos为底原始信号

dataLen = length(y); %获取声音长度
t=(0:dataLen-1)/Fs;

subplot(3,1,1);
plot(t, y), title('Source'),grid;  %波形图
xlim([0,100]);
xlabel('Time(s)');
ylabel('Amplitude');

% Y = fft(X) 使用快速傅里叶变换算法返回向量X的离散型傅里叶变换
% Y = fft(X,n) 返回n点的离散傅里叶变换,如果向量X的长度小于n,函数要将向量X补零到长度n;如果向量X的长度大于n, 则函数阶段X使之长度为n。若X是矩阵,按相同方法对X进行处理。

N = 2^nextpow2(dataLen); %采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0
Y = fft(y,N)/N*2;   %除以N乘以2才是真实幅值,N越大,幅值精度越高
f = Fs/N*(0:1:N-1); %频率
A = abs(Y);     %幅值
subplot(3,1,2);plot(f(1:N/2),A(1:N/2));   %函数fft返回值的数据结构具有对称性,因此我们只取前一半
xlim([0,100]);
title('amplitude-frequency');
xlabel('frequency(Hz)');
ylabel('amplitude');

% P = angle(Y);   %相值
% subplot(3,1,3);plot(f(1:N/2),P(1:N/2));
% title('phase-frequency');
% xlabel('frequency(Hz)');
% ylabel('phase');

%  请参照 http://www.mathworks.com/support/tech-notes/1700/1702.html
xdft = Y(1:N/2+1);
psdx = (1/(Fs*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = f(1:N/2+1);
subplot(3,1,3);
plot(freq,10*log10(psdx));%注意这是dB显示,不然就成了频率谱了
% xlim([0,1000]);
xlabel('Frequency (Hz)');
ylabel('Power (dB)');

end

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web前端大作业:诗人文化网页主题网站【唐代诗人】纯HTML+CSS制作

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

五分钟学会各种环形进度条

本文将会通过svg实现圆形进度条和矩形进度条以及三角形进度条&#xff0c;先放效果图 圆环进度条 首先我们需要两个画两个圆&#xff0c;一个是底色圆&#xff0c;一个是进度圆。 <svg width"200" height"200"><circle fill"none" cx…

Web 3.0顶级干货教学:区块链概述

Web 3.0顶级干货教学&#x1f525;&#xff1a;区块链定义&#xff1f; 尊重原创&#xff0c;本人致力于打造高质量博客&#xff0c;编写不易 &#xff0c;帮忙点赞关注一下~转载小伙伴请注明出处&#xff01;谢谢 区块链是什么&#xff1f; 最早使用历史 1991年采用 时间戳 追…

【大数据入门核心技术-Spark】(一)Spark介绍

​目录 ​一、Spark概述 二、为什么要学习Spark 三、Spark 四大特性 1、速度快 2、易用性 3、通用性 4、兼容性 一、Spark概述 Apache Spark™ is a unified analytics engine for large-scale data processing. spark是基于内存计算的大数据处理框架&#xff0c;由于基…

葡聚糖/聚己内酯两亲嵌段聚合物(Dextran-PCL)|5-氟尿嘧啶-右旋糖酐偶联物(DEX-5-Fu)

葡聚糖/聚己内酯两亲嵌段聚合物(Dextran-PCL)|5-氟尿嘧啶-右旋糖酐偶联物(DEX-5-Fu) 中文名称&#xff1a;葡聚糖/聚己内酯两亲嵌段聚合物 产品描述&#xff1a; 一种葡聚糖/聚己内酯两亲嵌段聚合物,它是由胺端基葡聚糖和醛端基聚己内酯通过偶联反应生成,其中葡聚糖链段的数均…

SSM框架学习记录-Spring_day03

1.AOP简介 代码参考Spring_17_aop_demo 什么是AOP&#xff1f; AOP(Aspect Oriented Programming)即面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构 AOP作用 在BookDaoImpl.java中&#xff0c;执行save方法显然可以计算程序执行时间&#xff0c;…

Redis框架(三):大众点评项目 基于Session的短信登录

大众点评项目 基于Session的短信登录需求&#xff1a;基于Session实现短信验证登录基于Session的短信登录发送手机验证码实现登录 &#xff08;注意MyBatisP的接口使用&#xff09;新的问题SpringCloud章节复习已经过去&#xff0c;新的章节Redis开始了&#xff0c;这个章节中将…

C#语言实例源码系列-实现无损压缩图片

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

微电网两阶段鲁棒优化问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Redis之相关介绍、远程docker部署以及相关shell命令

Redis相关shell命令一、概述1、介绍2、作用3、特性4、官方网址二、远程服务Docker上Redis相关测试及命令1、Redis安装及挂载1.1 查找所有关于Redis1.2 拉取最高版本的Redis1.3 通过xftp连接到远程服务器1.4 挂载1.5 开启远程服务器的端口1.6 修改配置文件2、开始使用Redis2.1 开…

autoconf-archive源码安装

0. 源码地址 autoconf-archive源码下载地址经由https://savannah.gnu.org搜索"autoconf-archive"到GNU Autoconf Archive - Summary [Savannah] 再在其中点击上图中箭头位置&#xff0c;转到GitHub - autoconf-archive/autoconf-archive: A mirror of the GNU Autoc…

数据分析软件-FineReport内置SQl提交

1. 概述 1.1 版本 报表服务器版本 功能变动 11.0.2 填报配置表时支持从数据库中模糊搜索表&#xff0c;详情见 2.2 节。 1.3 功能介绍 设计好填报表格&#xff0c;添加填报控件之后&#xff0c;如下图所示&#xff1a; 需要将填报数据的单元格与数据库表字段进行绑定&#…

【微服务】2、一篇文章详解 Ribbon 负载均衡

Ribbon 负载均衡一、负载均衡原理&#xff08;debug 源码&#xff09;(1) 基本介绍(2) 打断点① LoadBalancerInterceptor.java - intercept()② RibbonLoadBalancerClient.java - execute()③ RibbonLoadBalancerClient.java - execute()④ RibbonLoadBalancerClient.java - g…

【STM32】详解RTC实时时钟的概念和配置示例代码

一、什么是RTC RTC(Real-time Clock)&#xff1a;实时时钟&#xff0c;本质上是一个支持BCD编码的定时器/计数器。主电源断电后能够由电池供电&#xff0c;使其时钟跳转依然正常。 二、STM32F4芯片内的RTC功能 ①日历时钟&#xff08;时分秒、年月日、星期&#xff09; ②两个闹…

六、排序算法介绍3

4、希尔排序 4.1 简单插入排序问题 简单的插入排序可能存在的问题&#xff0c;数组 arr { 2, 3, 4, 5, 6, 1 } 这时需要插入的数 1(最小)&#xff0c;简单插入排序的过程如下&#xff1a; {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3,4,…

CCIA技术沙龙 | “数据安全风险评估及安全服务实践” 沙龙成功举办

2022年12月8日&#xff0c;由中国网络安全产业联盟&#xff08;CCIA&#xff09;主办、CCIA数据安全工作委员会支持、杭州美创科技股份有限公司承办的“数据安全风险评估及数据安全服务实践”主题技术沙龙成功举办。 当前&#xff0c;我国数字经济快速发展、数字化转型持续深入…

Java对象深拷贝详解(List深拷贝)

1、Java中拷贝的概念 在Java语言中&#xff0c;拷贝一个对象时&#xff0c;有浅拷贝与深拷贝两种 浅拷贝&#xff1a;只拷贝源对象的地址&#xff0c;所以新对象与老对象共用一个地址&#xff0c;当该地址变化时&#xff0c;两个对象也会随之改变。 深拷贝&#xff1a;拷贝对…

一起学习用Verilog在FPGA上实现CNN----(一)总体概述

1 总体概述 为避免闭门造车&#xff0c;找一个不错的开源项目&#xff0c;学习在FPGA上实现CNN&#xff0c;为后续的开发奠定基础 1.1 项目链接 大佬的开源项目链接&#xff1a; CNN-FPGA 链接跳转界面如下&#xff1a; 大佬的该项目已经发表论文&#xff0c;而且开源工程结…

Qt5.6.1移植海思Hi3521d(一)

系列文章目录 文章目录系列文章目录前言一、开发环境二、搭建环境1.准备2.海思SDK和交叉编译器安装2.测试交叉编译器一下3.安装tftp总结前言 上半年做个一个Qt移植海思芯片的程序&#xff0c;感觉差不多快忘记了&#xff0c;赶紧记录一下 一、开发环境 系统&#xff1a;Ubunt…

初学Python到月入过万最快的兼职途径(纯干货)

程序员小猴紫&#xff0c;不错过任何一次干赚钱干货 1.兼职薪资&#xff0c;附行哥工资单2.兼职门槛&#xff0c;附学习知识清单3.兼职途径&#xff0c;附入职考核过程4.我的兼职感受 答应小猴紫的第一篇赚钱干货推文来啦&#xff0c;行哥第一个在读书期间通过兼职赚到的10w收…