CZT的原理及matlab应用
2021/7/18 23:05:17
本文主要是介绍CZT的原理及matlab应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
CZT原理
CZT和DFT的matlab比较
举个例子,原来的时域信号是x(t)=cos(2pif1t)+ cos(2pif2t) + cos(2pif3t), f1=60HZ, f2=62HZ, f3=66HZ, 现在对x(t)以Fs=600HZ进行采样,选取t>=0 后200个采样点,即选取时域在0~1/3 s的信号部分,得到x(n), 对x(n)进行200点FFT,得到如下结果。因为频谱分辨率只有3HZ,所以分辨不出60和62HZ的部分,但是60与66HZ可分辨。
n=0:199;Fs=600; f1=60;f2=62;f3=66; t=n/Fs; xn=cos(2*pi*f1*t)+cos(2*pi*f2*t)+cos(2*pi*f3*t); y=fft(xn,200); plot([0:3:597],abs(y)); xlabel('f/HZ');ylabel('幅度');
当然还有一种方法,提高FFT的点数,如果使用600点FFT,频率分辨率为1HZ, 正好可以分辨60与62HZ, 缺点是增加了计算量。
现在使用CZT, 它的matlab表达式y=czt(x,N,W,A);
X是要变换的序列,N是变换的点数,W和A和上文中czt表达式中的含义一样。
依然选取N=200, 我们已知有用的频段是60HZ~66HZ, 可以从50HZ开始分析,令频谱分辨率为0.1HZ,因为N=200,所以最后可以分析到50+200*0.1=70HZ。不必像DFT一样分析0~600HZ
结果如图所示,成功分辨处60与62HZ,而且只用了200点分析。
n=0:199;Fs=600; f1=60;f2=62;f3=66; t=n/Fs; xn=cos(2*pi*f1*t)+cos(2*pi*f2*t)+cos(2*pi*f3*t); D=0.1;F0=50; W=exp(-j*2*pi*D/Fs); A=exp(j*2*pi*F0/Fs); y=czt(xn,200,W,A); plot([50:0.1:69.9],abs(y)); xlabel('f/HZ');ylabel('幅度');
这篇关于CZT的原理及matlab应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解
- 2024-12-20利用Gemini构建处理各种PDF文档的Document AI管道