在学习数字信号处理时,很多种频率很容易搞混淆,有模拟/数字/频率/角频率等等,也不是特别清楚不同频率之间的关系,希望这篇文件可以为各种频率来个了结.

4种频率及其数量关系

实际物理频率表示物理信号的真实频率; fs为采样频率,表示ADC采集物理信号的频率,由奈奎斯特采样定理可以知道,fs必须≥信号最高频率的2倍才不会发生信号混叠,因此fs能采样到的信号最高频率为fs/2。

角频率Ω是物理频率的2π倍, 这个也称模拟频率。

归一化频率是将物理频率按fs归一化之后的结果,最高的信号频率为fs/2对应归一化频率0.5(ω=π),这也就是为什么在matlab的fdatool工具中归一化频率为什么最大只到0.5的原因。归一化频率中不含fs的信息.

圆周频率是归一化频率的2*pi倍,这个也称数字频率ω。

有关FFT频率与实际物理频率的分析

做n个点的FFT,表示在时域上对原来的信号取了n个点来做频谱分析,n点FFT变换的结果仍为n个点。

换句话说,就是将2π数字频率ω分成n份,而整个数字频率ω的范围覆盖了从0-2π*fs的模拟频率范围。这里的fs是采样频率。而我们通常只关心0-π中的频谱,因为根据奈科斯特定律,只有f=fs/2范围内的信号才是被采样到的有效信号。那么,在w的范围内,得到的频谱肯定是关于n/2对称的。

举例说,如果做了16个点的FFT分析,你原来的模拟信号的最高频率f=32kHz,采样频率是64kHz,n的范围是0,1,2...15。这时,64kHz的模拟频率被分成了16分,每一份是4kHz,这个叫频率分辨率。那么在横坐标中,n=1时对应的f是4kHz, n=2对应的是8kHz, n=15时对应的是60kHz,你的频谱是关于n=8对称的。你只需要关心n=0到7以内的频谱就足够了,因为,原来信号的最高模拟频率是32kHz。

这里可以有两个结论:

必须知道原来信号的采样频率fs是多少,才可以知道每个n对应的实际频率是多少,第k个点的实际频率的计算为f(k)=k*(fs/n)

你64kHz做了16个点FFT之后,因为频率分辨率是4kHz,如果原来的信号在5kHz或者63kHz有分量,你在频谱上是看不见的,这就表示你越想频谱画得逼真,就必须取越多的点数来做FFT,n就越大,你在时域上就必须取更长的信号样本来做分析。但是无论如何,由于离散采样的原理,你不可能完全准确地画出原来连续时间信号的真实频谱,只能无限接近(就是n无限大的时候),这个就叫做频率泄露。在采样频率fs不变得情况下,频率泄漏可以通过取更多的点来改善,也可以通过做FFT前加窗来改善,这就是另外一个话题了。

为什么抽取/内插看起来对频谱有影响?

在数字信号处理时,经常需要对数据进行抽取或者内插处理.抽取之后的频率展宽了n倍,内插之后的频率压缩了n倍,从而需要在变采样率之后添加抗混叠滤波器.但是实际上信号的频率在抽取/内插的前后并没有发生变化.这里的核心原因是:归一化频率失去了采样率fs信息.

抽取和内插的实质是采样率fs的变化

image.png

image.png

举个例子:

我们设定fs=30.72MHz,使用3个cw信号的合成信号代表一个BW=8MHz的宽带信号,使用实际频率来表示信号,看到BW没有变化,使用数字频率w来表示信号,信号的BW似乎被压缩了.

Q: 为什么要在归一化频率下来分析信号?

image.png

归一化频率

clear all;

close all;

fs = 30.72e6;

ts = 1/fs;

nFFT=4096;

%nFFT=32768;

t=0:ts:(nFFT-1)*ts;

d0=100*sin(2*pi*10e6*t);

d1=50*cos(2*pi*5e6*t);

d2=10*cos(2*pi*2e6*t);

dSum=d0+d1+d2;

dFFT = abs(fftshift(fft(dSum,nFFT)))/(nFFT/2);

%dFFT = abs(fft(dSum,nFFT))/(nFFT/2);

fAxis = (-1/2*nFFT:(1/2*nFFT-1))/nFFT*fs;

figure(1)

subplot(2,1,1)

plot(fAxis,dFFT)

title('original signal')

subplot(2,1,2)

dSumI= zeros(1,2*nFFT);

for k =1:nFFT

dSumI(2*k) = dSum(k);

end

dFFTI = abs(fftshift(fft(dSumI,2*nFFT)))/(nFFT);

fAxisI = (-nFFT:(nFFT-1))/(2*nFFT)*fs*2; %fs double

plot(fAxisI,dFFTI)

title('interpolated signal')

figure(2)

subplot(2,1,1)

wAxis = 2*pi*(-1/2*nFFT:(1/2*nFFT-1))/(nFFT);

plot(wAxis,dFFT)

set(gca,'XTick',-2*pi:pi/2:2*pi)

title('original signal normalize')

subplot(2,1,2)

wAxisI = 2*pi*(-nFFT:(nFFT-1))/(2*nFFT);

plot(wAxisI,dFFTI)

set(gca,'XTick',-2*pi:pi/2:2*pi)

title('interpolated signal normalize')

参考:

归一化数字角频率_数字信号处理中的各种频率相关推荐

  1. 归一化数字角频率_数字信号处理中的归一化频率

    4种频率及其数量关系 实际物理频率表示AD采集物理信号的频率,fs为采样频率,由奈奎斯特采样定理可以知道,fs必须≥信号最高频率的2倍才不会发生信号混叠,因此fs能采样到的信号最高频率为fs/2. 角 ...

  2. 归一化数字角频率_说一说信号与系统中的“归一化处理“

    答疑群里面有同学问,"归一化是什么意思?".关于数学上归一化严谨的定义我没有研究过.去网上查了一下,360百科上是这样定义的: "归一化是一种简化计算的方式,即将有量纲的 ...

  3. 数字身份_数字身份作为投资

    数字身份 Trustworthy digital identification remains one of the main challenges of the internet because n ...

  4. 归一化处理公式_数学建模中的数据处理——归一化处理

    关于数据处理,很常见的一个方法就是"去量纲处理",在大家数据处理中经常使用到数据的标准化处理,后边的主成分分析法,因子分析,聚类分析等,都会使用到数据归一化处理.,在此分享一下关于 ...

  5. rc振荡器振荡频率计算_微控制器中的振荡器频率

    rc振荡器振荡频率计算 微控制器中的振荡器频率 (Oscillator Frequency in Microcontrollers) The digital computer systems must ...

  6. java正则表达式匹配数字范围_在java中怎么利用正则表达式匹配数字

    在java中怎么利用正则表达式匹配数字 发布时间:2020-12-03 17:47:12 来源:亿速云 阅读:58 作者:Leah 在java中怎么利用正则表达式匹配数字?针对这个问题,这篇文章详细介 ...

  7. matlab 数字识别_在MATLAB中利用神经网络进行分类

    在这篇文章中,主要阐述在MATLAB环境下利用神经网络对输入的数字图像进行识别.我们利用一个5*5的矩阵来表示1-5的数据,如下图所示: 基于以上问题,我们构建的神经网络输入层的神经元个数为25个,即 ...

  8. flash数字时钟_数字电路设计在嵌入式中的应用

    点击蓝字了解开学问题 数字电路作为一门专业基础课,除了介绍数字电路的理论知识外,更需要通过配套的实验平台将理论知识和实践环节相结合,培养学生的动手能力和实践创新能力.为此,自主开发了基于 FPGA 的 ...

  9. mysql正则表达式数字开头_在MySQL中选择所有以5个数字字符(正则表达式)开头的电子邮件地址...

    要获取以5个数字字符开头的电子邮件地址,可选的解决方案是使用REGEXP-select *from yourTableName where yourColumnName regexp "^[ ...

最新文章

  1. Java中映射怎么实现_我们如何在Java 9的JShell中实现映射?
  2. 倒数日怎么显示在桌面_深圳暴风谷滑梯皮带提升机怎么选
  3. 数据结构:二分查找算法
  4. Executors Java编程规范插件提示手动创建线程池的解决办法
  5. win10显示未安装任何音频输出设备问题解决
  6. 脑语言2500令v0.5.5
  7. android nexus 刷机工具包,Nexus5刷机救砖Recovery详细教程
  8. Kaggle 入门 Crime
  9. aliyun资源编排 介绍和实例
  10. 北大青鸟ACCP一期云题库难题总结
  11. 快速缓解过敏的简单技巧
  12. memory management 蓝屏win10,要怎么解决这个蓝屏问题
  13. Problem B. L04-02 一元二次方程的根(重点在于求虚根---初学简单版)
  14. yum 代理(系统代理对 yum 不生效)
  15. cesium面积计算_GitHub - BulletYuan/bulletCesium: GIS可视化——基于Cesiumjs的一些工具类,测量距离、测量面积。持续更新......
  16. 回顾 Firefox 历史
  17. J - Virus UVA - 12511——最长上升递增子序列
  18. android平板接口,初学者必读 细品平板接口的百般滋味
  19. Android 8.0(Android O) AccountManager 行为变更
  20. (C语言入门)新手小白刷牛课网,遇见一个较为经典的分支结构的题目(附件解决代码)

热门文章

  1. 梦幻仙缘剧情java_梦幻仙缘BT版
  2. frontpage中没有动态HTML效果,FrontPage制作网页的动态效果(上)
  3. 抱歉出现问题:关闭 windows hello,然后尝试再次运行安装程序
  4. The 19th Zhejiang Provincial Collegiate Programming Contest 2022浙江省赛 (A/B/C/G/L/I)
  5. 移动光猫改桥接,开启telnet
  6. Java实现迪杰斯特拉算法
  7. Python-使用方法修改字符串的大小写
  8. 【对线面试官】阿里面试经历,有些人走一步看一步就挂了
  9. cdoj1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。
  10. 计算机管理用户和组无法访问,用户和组管理权限及文件访问控制