主程序:

%
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

完整资料下载:

MATLAB应用1-MATLAB傅里叶变换函数封装MATLAB应用2-MATLAB串口采集加速度计数据-单片机文档类资源-CSDN下载

MATLAB应用1——MATLAB傅里叶变换函数封装相关推荐

  1. 用MATLAB做周期三角波的傅里叶级数,Matlab 周期方波信号傅里叶级数展开

    方波信号为: 傅里叶级数展开为: 程序运行结果: 程序代码: clear x = -6:0.01:6; T = 4; f = x; for N = 1:length(f) temp = rem(abs ...

  2. 连续函数matlab采样,基于 MATLAB 的时域信号采样及频谱分析(转)

    一.课程设计题目: 基于 MATLAB 的时域信号采样及频谱分析 二.基本要求: ① 掌握数字信号处理的基本概念.基本理论和基本方法: ② 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方 ...

  3. 【 MATLAB 】使用 MATLAB 实现模拟信号的近似及其连续傅里叶变换

    严格来说,利用MATLAB是不可能用来分析模拟信号的.然而,如果有足够小的时间增量在足够细的栅格上对采样而产生一种平滑的图,并有足够大的时间来展示所有的模式,那么就能对模拟信号作近似分析.令是栅格间隔 ...

  4. matlab 数学库,matlab数学函数库

    (n) 求 n 的阶乘 如何用 matlab 配方 没有发现 matlab 有这一命令,不过我们可以调用 maple 的命令,调用方法如下: 首先加载 maple 中的 student 函数库,加载. ...

  5. matlab的fftn,matlab fftn

    (X,m,n) fftn 进行 n 维快速傅立叶变换(反变换用 ifftn) 语法:Y=ffn(X) \\ Y=fftn(X,siz) fftshift 快速傅立叶变换的 DC 组件移到光谱中心 语法 ...

  6. matlab近红外光谱曲线,Matlab预处理近红外光谱.docx

    Matlab预处理近红外光谱 Matlab预处理近红外光谱1. 微分处理光谱一阶微分公式:二阶微分公式:式中,是谱图数据中i波数下的透过率,g为窗口宽度一阶导数MATLAB代码:X1st=diff(X ...

  7. matlab膨胀检测,matlab腐蚀膨胀算法

    Matlab图像处理知识(四) ? 膨胀 ? 腐蚀 ? 开运算闭运算 ? 击中击不中 ? 结合进行图像预处理 膨胀 ? 原理:膨胀是在图像中"增长"或"变粗"的 ...

  8. matlab 摄像头拍照,matlab摄像头拍照

    图像采集: 该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行 拍照并...在 MATLAB 中我们可以调用 im2gray 函数对图像进行灰度化处理. 4.2.2图像的...... 2 车辆牌 ...

  9. 【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)

    上篇博文分析了同一有限长序列在不同的N下的DFT之间的不同: MATLAB ]使用 MATLAB 作图讨论有限长序列的 N 点 DFT(强烈推荐)(含MATLAB脚本) 那篇博文中,我们通过补零的方式 ...

最新文章

  1. 智能医疗战场 人工智能如何赋能健康智能终端?
  2. Linux 用户组相关命令
  3. Redis学习之Sentinel(四)
  4. Predator:比微软Kinect更强的视频追踪算法-来自捷克博士论文
  5. plotplay恢复默认设置_手把手解答win10系统potplayer经常弹出自动更新提示的还原技巧...
  6. Mozilla FireFox 2.0 简体中文版发布
  7. coolfire文章之二
  8. Unity中使用Curvy快速生成路径,并使物体沿着路线运动
  9. 51单片机学习制作定时闹钟及《花海》演奏
  10. ReviewBoard+SVN配置强制code review
  11. 高纬度思考法读书笔记
  12. OpenAI又放大招:连接文本与图像的CLIP,在ImageNet上效果媲美ResNet50
  13. .csd文件怎么读?--CMU_MOSI_Opinion_Labels.csd
  14. Dijkstra 最短路径算法 秒懂详解
  15. echarts实现中国地图(Vue)
  16. 偏门SEO的一些分享(小猫推荐)
  17. Program Files (x86)\sogoupinyin\Components\程序异常结束
  18. jq向下滑动刷新_jQuery手势控制,下拉刷新
  19. QML进阶(八)实现QML界面与C++类型交互
  20. android版本隐藏彩蛋养猫,Android 11 新增养猫彩蛋,正式版即将推送

热门文章

  1. 服务器性能-一台服务器能承载多少人同时访问?
  2. 锂电池净化厂房低湿车间装修SICOLAB
  3. VB.net与VB6 调用Websocket功能的方法--Websocket For VB
  4. iOS 锁的底层原理
  5. 基于STM32的STM8脱机编程器 烧录器
  6. STP(生成树)基础
  7. Ubuntu20.04下安装显卡驱动
  8. Cadence-OrCAD-Allegro-17.2工具链便携式版本下载
  9. NC57 开发小结篇
  10. js中实现页面跳转的几种方法