FFT与CZT变换

  • FFT
  • CZT变换

FFT

用FFT算法计算序列x(n)=[2,1,3,2,1,5,1]与h(n)=[1,2,-1,-3]的线性卷积,画出输入、输出序列的波形图。

x=[2 1 3 2 1 5 1];
h=[1 2 -1 -3];
N=length(x)+length(h)-1;
n=0:N-1;
x=[x,zeros(1,N-length(x))];
h=[h,zeros(1,N-length(h))];
X=fft(x);
H=fft(h);
Y=X.*H;
y=ifft(Y);
subplot(1,3,1);
stem(n,x,'.');
xlabel('n');
ylabel('x(n)');
title('x(n)');
grid;subplot(1,3,2);
stem(n,h,'.');
xlabel('n');
ylabel('h(n)');
title('h(n)');
grid;
subplot(1,3,3);
stem(n,y,'.');
xlabel('n');
ylabel('y(n)');
title('y(n)');
grid;

结果如图:

已知模拟信号xa(t)如下所示,试用FFT算法求xa(t)的频谱。

要求:
采样时间间隔T分别取0.05s、0.02s、0.01s和0.01s,采样点数分别取200、500、1000和2000,试用FFT算法分别画出这四种情况的频谱图(幅度谱)。

T0=[0.05,0.02,0.01,0.01];
L0=[10,10,10,20];
for i=1:4T=T0(i);N=L0(i)/T0(i);D=2*pi/(N*T);n=0:N-1;x=exp(-0.02*n*T).*cos(6*pi*n*T)+2*cos(14*pi*n*T);k=floor(-(N-1)/2:(N-1)/2);X=T*fftshift(fft(x));[i,X(i)]subplot(2,2,i);plot(k*D,abs(X));axis([min(k*D),max(k*D),0,inf]);str=['T=',num2str(T),'N=',num2str(N)];title(str);
end

结果如图:

CZT变换

已知N=128,f1=8Hz,f2=8.22Hz,f3=9Hz,fs=40Hz,序列x(n)如下:

要求:
(1) 用CZT来求x(n)的DFT频谱(A=1时的CZT变换);
(2) 直接用FFT来求x(n)的频谱;
(3) 用CZT求x(n)的频谱,分析的起始频率点为7.2Hz,频率间隔为0.05Hz,M=60;

画出这三种情况下的频谱图,并进行分析。

N=128;
f1=8;f2=8.22;f3=9;fs=40;
stepf=fs/N;
n=0:N-1;
t=2*pi*n/fs;
n1=0:stepf:fs/2-stepf;
x=sin(f1*t)+sin(f2*t)+sin(f3*t);
M=N;
W=exp(-j*2*pi/M);% A=1ʱµÄczt±ä»»
A=1;
Y1=czt(x,M,W,A);
subplot(311)
plot(n1,abs(Y1(1:N/2)));grid on;% DTFT
Y2=abs(fft(x));
subplot(312)
plot(n1,abs(Y2(1:N/2)));grid on;% Ïêϸ¹¹ÔìAºóµÄczt
M=60;
f0=7.2;
DELf=0.05;
A=exp(j*2*pi*f0/fs);
W=exp(-j*2*pi*DELf/fs);
Y3=czt(x,M,W,A);
n2=f0:DELf:f0+(M-1)*DELf;
subplot(313);plot(n2,abs(Y3));grid on;

结果如图:

分析:频率为8Hz和8.22Hz的两个正弦的频谱不易分辨,第三个图中分点较细,三个正弦的谱线都可以分辨出来。

信号处理之FFT与CZT变换相关推荐

  1. FFT快速傅立叶变换在示波器中的用法

    大多数示波器上都有个FFT功能,也叫快速傅立叶变换,但很多人不了解这个功能是做什么用的,百度以后又会遇到各种各样的高数公式,看的一头雾水,遂而放弃这块知识. 我们来看百度百科的解释: FFT,即为快速 ...

  2. numpy.fft 实现 czt (Chirp Z-transform)

    numpy.fft 实现 czt (Chirp Z-transform) 动机 如果对L2(R)L^2(\R)L2(R)上做Fourier变换,直接用离散FFT是不行的.需要用CZT.用于数值计算的n ...

  3. verilog实现czt变换

    一.项目要求 ise,Verilog, 点数 512,czt变换, 分析带宽10khz,中心频率25khz,采样频率625KHz 信号从ram中读取,16bit数据宽度 工作时钟100M 二.分析 原 ...

  4. FFT(傅里叶快速变换,详细讲解+推导) 每日一遍,算法再见!

    FFT详细推导 FFT(傅里叶快速变换) 一.前置知识 1.复数和单位根 2.单位根的三个引理 3.多项式 二.FFT(快速傅里叶变换推导) 三.IFFT 四.FFT求解多项式乘积模板代码 1.递归版 ...

  5. 数字信号处理FFT快速傅立叶变换MATLAB实现——实例

    今天做作业的时候发现要对一个信号进行FFT变换,在网上找了半天也没找到个能看懂的(因为我太菜了),后来自己研究了一下,感觉一知半解的 起因是这道作业题 例题-满足奈奎斯特 我画了两个图,一个是原信号经 ...

  6. matlab的czt变换,CZT变换(chirp z-transform)

    作者:桂. 时间:2018-05-20  12:04:24 前言 相比DFT,CZT是完成频谱细化的一种思路,本文主要记录CZT的C代码实现. 一.代码实现 原理主要参考MATLAB接口: 对应C代码 ...

  7. 信号处理之FFT(如何求幅度、相位、画频谱图)

    信号处理,可以理解为对信号进行某种加工或变换来达到削弱信号中的多余内容.滤除混杂的噪声和干扰.将信号变换成容易分析与识别的形式,便于估计和选择它的特征参量等目的. 快速傅里叶变换(FFT)是信号处理的 ...

  8. FS、DFS、FT、DTFT、DFT、FFT、DCT变换的联系与区别

    目录 前言 FS( 连续时间周期信号的傅里叶级数) DFS(离散傅里叶级数) FT(连续时间非周期信号的傅里叶变换) DTFT(离散时间傅里叶变换) DFT(离散傅里叶变换) FFT(快速傅里叶变换) ...

  9. CZT变换的原理及matlab应用

    CZT原理 CZT和DFT的matlab比较 举个例子,原来的时域信号是x(t)=cos(2pif1t)+ cos(2pif2t) + cos(2pif3t), f1=60HZ, f2=62HZ, f ...

最新文章

  1. 027_jQuery DOM 元素方法
  2. python 类中方法的动态特性
  3. challenging and foundational
  4. 试用Mono Beta 1.0
  5. 借助钉钉宜搭,奶茶店开始用黑科技管理门店了
  6. 天然气压缩因子计算软件_徐秀芬等:天然气加气站压缩机组效率的计算方法
  7. spring cloud全家桶_吃透这份Github点赞120k的Spring全家桶笔记Offer拿到手软
  8. Docker容器化部署及应用实战
  9. 阿里云开发-身份证图像识别(SpringBoot)
  10. Hadoop权威指南PDF分享
  11. html页面布局实验原理,Html设计实验报告.doc
  12. c语言根号sin60,用泰勒级数展开求sin60°的值C语言
  13. SpringBoot之Hypermedia-Driven RESTful Web Service
  14. 往年计算机二级在线查询,2012年计算机二级查询
  15. markdown格式,默写
  16. 黑客常用dos命令详解
  17. 爬虫B站任意视频 弹幕文字+时间
  18. c语言多进程之进程间通信IPC:信号操作函数之signal,kill
  19. Android系统手机通讯录
  20. python身份证区域分割_python文件操作实战(将数据按照区域进行划分--身份证号...

热门文章

  1. 写在2020最后一天 | 掘金年度征文
  2. linux恢复初始环境变量,linux 环境变量恢复默认值
  3. 百心安生物上市步伐暂停:无基石投资人认购,高盛已“消失”
  4. 【大道至简】浅谈自然语言处理(NLP)学习路线(二):N-Gram模型,一文带你理解N-Gram语言模型
  5. Java虚拟机:关于JDK8到JDK9-10的一点小变化(tools.jar、dt.jar)
  6. 【Linux】关于三角函数、反三角函数在VC和linux gcc下的编译
  7. 联想服务器全年销售第一海报,联想在服务器市场更应该巩固中国市场
  8. 怎么查看Python的源代码
  9. Python自动化测试学习哪些知识?
  10. Airflow的简单入门