用MATLAB处理语音信号,做fft后要获得单边谱。本文收集资料进行了推导,对于fft数值后续操作从理论上做了一个理解。并且简洁的解释了fft函数的结果。供大家参考,欢迎批评指正。

理论推导

三角函数形式傅里叶级数

根据傅里叶级数原始定义,其三角函数集合在一个周期上是完备正交集:

[公式1]

T是待分析信号的周期。所以每个频率分量:k/T下,频谱成分由括号内Ak项和Bk项共同决定,且都是非负角频率。也就是说想做成频率-幅度谱表示信号f(t)需要两个图。

指数形式傅里叶级数

通过欧拉公式变换得到等效形式,指数形式傅里叶级数。

[公式2]

变换的目的是期望频谱能用一个单一数值C_k表示,而不是分为A_k和B_k两个频谱图。

用如下方式得到C_k:

可见每个C_k由A_k和B_k共同影响,且对应公式一中一个频率分量kω0,在公式2中分为了双边频谱的两个谱线C_k与C_-k。最终得到指数形式傅里叶变换:

[公式3]

傅里叶级数与双边谱的关系

根据[公式3]中的C_k得到的双边频谱,就是双边谱。三角形式傅里叶级数项与双边谱幅度的关系推导如下:

由于本身是实信号,所以不会出现虚数项, C_k的相位φk取值为-π,0,π,故C_k与C_-k取值保持相同。所以对于双边幅度谱谱线大小:

信号处理时,可以用功率谱(功率谱密度)和频谱(频谱谱密度)来分析信号,功率谱需要先做自相关在做FFT,频谱直接用信号做FFT;功率谱是从能量的角度研究信号,频谱是从时域变为频域的对信号的描述。

傅里叶级数对应的单边谱

[公式1]还可以写为如下形式得到单边谱:

[公式4]

相比公式1,公式三只用一项表示特定频率的频谱,另外增加了相位信息。

[公式4]对应的频谱就是单边谱,[公式2]对应的频谱为双边谱,可见:

也就是相应频谱(k≠0)单边谱的幅度谱幅值大小,是双边谱中的两倍。相位关系如下:

所以双边谱C|_k的相位和单边谱D、_n的相位相同(k>0),k<0时相位奇对称。

MATLAB - fft函数解释

Y = fft(x),信号x长度为L,L是偶数,采样率Fs,得到的Y的结果是L个复数。复数的相位就是相同频率双边频谱频率对应的相位。频谱幅度的数值还需要求模除以L。C = abs(Y/L),C就为双边谱的幅值,其中:

C(1)为直流分量,等于单边谱D_0;

C(2:N/2+1)为双边谱正频率值幅值,对应频率从Fs/N ~ Fs/2;想变为单片谱还要乘以2。

C(N/2+1:end)为双边谱负频率幅值,对应频率从-Fs/2 ~ -Fs/N,可以发现C(N/2+1)点被共用。

典型使用方法

Fs = 1000; % Sampling frequency

T = 1/Fs; % Sampling period

L = 1500; % Length of signal

t = (0:L-1)*T; % Time vector

S = 1*sin(2*pi*10*t) + 0.5*cos(2*pi*50*t); %signal with 2 components

Y = fft(S);

P2 = abs(Y/L); % 2-sides spectrum

P1 = P2(1:L/2+1); % fetch half of P2

P1(2:end-1) = 2*P1(2:end-1); % times 2 to turn to 1-side spectrum (k>0)

f = Fs*(0:(L/2))/L; % calculate real frequency of each point

plot(f,P1);

% 相位计算可以用 angle(Y(16))或者phase(Y(16))计算,结果为弧度。

补充

[公式4]推导三角变换基础:

通过以上计算过程与公式1,得到公式4。

Notification

source: 个人所学有限,若有错误和不足还请不吝赐教,我会及时更正。Terrence Zhou.

http://www.voidcn.com/article/p-zofhxxqm-bnw.html 转载请注明原址

Matlab求单边谱,关于实信号的双边谱和单边谱相关推荐

  1. 关于实信号的双边谱和单边谱

    用MATLAB处理语音信号,做fft后要获得单边谱.本文收集资料进行了推导,对于fft数值后续操作从理论上做了一个理解.并且简洁的解释了fft函数的结果.供大家参考,欢迎批评指正. 转载请注明原文地址 ...

  2. matlab 单边频率谱,matlab求单边功率谱

    求功率谱有好几种方法,本文例两种,一种是先求信号频谱,然后取平方后平均:第二种是用welch法(可指定各种窗). rng default; fs = 1000; % 采样率 t = 0:1/fs:1- ...

  3. matlab求单边功率谱

    求功率谱有好几种方法,本文例两种,一种是先求信号频谱,然后取平方后平均:第二种是用welch法(可指定各种窗). rng default; fs = 1000; % 采样率 t = 0:1/fs:1- ...

  4. 循环自相关函数和谱相关密度(五)——实信号、复信号模型下的QPSK信号循环谱MATLAB仿真结果及代码

    关注公号[逆向通信猿]口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(四)--实信号.复信号模型下的QPSK信号循环谱推导 8.4 仿真结果 8.4.1 实QPSK信号 符号速率RB = 40 ...

  5. 循环自相关函数和谱相关密度(三)——实信号、复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码

    关注公号[逆向通信猿],循环谱 说明:接上一节循环自相关函数和谱相关密度(二)--实信号.复信号模型下的BPSK信号循环谱推导 7.5 仿真结果 7.5.1 实BPSK信号 符号速率RB = 40,采 ...

  6. 循环自相关函数和谱相关密度(四)——实信号、复信号模型下的QPSK信号循环谱推导

    关注公号[逆向通信猿],口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(三)--实信号.复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码 8 QPSK信号谱相关密度函数 8.1 实信 ...

  7. 实信号和复信号频谱对比分析(双边带信号和单边带信号对比分析)

    在实际工作中发现实信号的频谱谱线有两根(正负谱线),而复信号频谱谱线只有一根,针对这个问题进行了理论分析. 单边带信号可以提高频谱占用率. 1.傅里叶变换概念理解 傅里叶变换公式如下所示: 使用正弦信 ...

  8. 循环自相关函数和谱相关密度(二)——实信号、复信号模型下的BPSK信号循环谱推导

    说明:接上一节循环自相关函数和谱相关密度(一)--公式推导 7 BPSK信号谱相关密度函数 7.1 实信号模型 BPSK实信号表达式可以写为 r(t)=y(t)+n(t)r(t) = y(t) + n ...

  9. 微分方程求解matlab冲激信号,用Matlab求冲激响应的几种方法

    ·实验技术与方法· 用 Matlab 求冲激响应的几种方法 贺富堂,应柏青,张 锋,孙 敏 ( 西安交通大学 电工电子教学实验中心,陕西 西安 710049) 摘 要: 用 Matlab 软件求冲激响 ...

最新文章

  1. 探索机器学习理论的最新进展,走近云、端、芯上的视觉计算——“智源论坛:机器学习报告会”重点梳理...
  2. 5G NGC — 会话管理模型 — PDU Session
  3. 基于用户投票的排名算法(五):威尔逊区间
  4. 字符串和整形、浮点类型的相互转化
  5. 建智能工厂,可从这6个方面着手!
  6. 为什么要用内插字符串代替string.format
  7. leetcode 18. 四数之和(双指针)
  8. Common Sort - 排序 - Java
  9. 递归计算二叉树的高度_如何使用递归方法计算二叉树的高度
  10. 利用WebHook实现自动部署Git代码
  11. shell while 结束循环_Shell脚本编程2 for循环/while循环
  12. String spilt()方法
  13. Python爬取网易云音乐歌单名以及歌单标签
  14. 论文 | Credit Card Fraud Detection Using Convolutional Neural Networks
  15. 树莓派新手使用iobroker日志三(米家全家桶加入iobroker)
  16. 自动控制matlab实验,自动控制原理MATLAB实验报告.doc
  17. java fix sence_repair fix mend的区别
  18. 超微主板升级bios_AMD又给CPU打鸡血了!但刷BIOS前你要懂这些
  19. 智慧路灯合作伙伴生态大会(深圳站)
  20. 未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录

热门文章

  1. 英语基础知识:句子类型
  2. Wireshark抓包:实例诊断TCP连接问题
  3. 搭建一个springboot工程测试md5加密
  4. aptio设置全中文_中文bios设置方法图解教程(超简单)
  5. Currency Exchange (SPFA)
  6. spring的singleton和prototype
  7. uniapp实现倒计时
  8. PhpSpreadsheet读取excel
  9. cfg格式文件在服务器哪里,cfg文件,小编教你怎么打开cfg文件
  10. C++面向对象特性之多态