*连续时间-周期性信号频谱

clc;clear;close all
N = input('N= ');
T = 0.05;
n = 1:N;
%原始数据输入
D = 2*pi/(N*T);
%计算分辨率
xa=cos(10*n*T);
%有限长余弦序列
Xa=T*fftshift(fft(xa,N)); %Xa(1)
%求x(n)的DFT,移动到对称位置
k=floor(-(N-1)/2:(N-1)/2);
%对于w=0对称的奈奎斯特频率下标向量
TITLE=sprintf('N=%i,L=%i',N,N*T);
%变数值为格式控制下的字符串
plot(k*D,abs(Xa));
axis([-20,20,0,max(abs(Xa))+2]);
xlabel('\Omega');ylabel('|X(j\Omega)|')
title(TITLE);
grid;

关于 fftshift函数:用于将数组进行循环移位,以达到对fft结果的负分量进行移位,方便结果的绘制;

https://ww2.mathworks.cn/help/matlab/ref/fftshift.html

*连续时间-非周期信号的频谱

综上: 抽样间隔T要选择足够小,以避免频谱的混叠失真,而截断长度L=NT要选择足够大,以减少截断效应,提高频率分辨率。建议采用以下步骤:

1:先选定L不变,T逐步减少,直到频谱混叠的影响逐步减少到可以容忍的程度(研究-π/T或π/T处的频谱值),得到此时的T值;

2:增加L值(实质上就是增加有效数据长度),使得截断效应减少,这时采用上面已求的最小T值。直到频谱的差别很小时,得到此时的L值。

所以只需赋L/T两个变量值,N=L/T就能随之改变,总之要赋值N/L/T中两个变量即可。

编程下例:

clear;clc
T0=[0.05,0.02,0.01,0.01]; %四种抽样间隔
L0=[10,10,10,20]; %四种信号记录长度,N=L0(i)/T0(i)
for i=1:4
T=T0(i); N=L0(i)/T0(i); %按顺序选用T和L
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));
xlabel('模拟角频率(rad/s)');ylabel('幅度');grid
axis([min(k*D),max(k*D),0,inf]); %坐标范围
str=['T=',num2str(T),'N=',num2str(N)];title(str); %标题显示抽样间隔和FFT点数N
end

  

FFT理解的更多相关文章

  1. FWT(快速沃尔什变换)小结

    在多项式卷积的处理中,我们实际上实现的是下面的一个式子 \[ C_k=\sum_{i+j=k}A_iB_j \] 然而事实上有些和(sang)蔼(xin)可(bing)亲(kuang)的出题人,并不会 ...

  2. UR#34. 多项式乘法

    #34. 多项式乘法 统计 描述 提交 自定义测试 这是一道模板题. 给你两个多项式,请输出乘起来后的多项式. 输入格式 第一行两个整数 nn 和 mm,分别表示两个多项式的次数. 第二行 n+1n+ ...

  3. 2019 HL SC day10

    10天都过去了 4天都在全程懵逼.. 怎么可以这么难啊 我服了 现在想起依稀只记得一些结论 什么 反演? 什么后缀自动机?什么组合数的应用?什么神仙东西 ,不过讲课人的确都是神仙.(实名羡慕. mzx ...

  4. 一个蒟蒻对FFT的理解(蒟蒻也能看懂的FFT)

    建议同学们先自学一下"复数(虚数)"的性质.运算等知识,不然看这篇文章有很大概率看不懂. 前言 作为一个典型的蒟蒻,别人的博客都看不懂,只好自己写一篇了. 膜拜机房大佬 HY 一. ...

  5. 卷积、矩阵乘积、高斯模糊滤波(降噪)、空域计算(2D卷积计算)、频域计算(FFT)的理解

    矩阵乘积:对应行列对应元素相乘的和组成新的矩阵 两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵 并将此乘积记为: ...

  6. Matlab 之 FFT的理解和应用

    网上看了一些大牛的关于FFT的见解,加上自己的一点儿理解,针对以下这几个问题来加深对FFT的理解. 不知道大家有没有类似以下几点的困惑: 问题的提出 对于1秒钟输出的连续信号,使用采样率Fs不同,就会 ...

  7. DFT到FFT的理解

    DFT简化计算理解(FFT)   DFT: WN=e^(-j*2*pi/N) DFT复杂度o(N^2) 降低与N^2的依赖 使N = LM  (L^2+m^2 <= N^2) N点DFT分解为M ...

  8. FFT算法理解与c语言的实现

    完整内容迁移至 http://www.face2ai.com/DIP-2-3-FFT算法理解与c语言的实现/ http://www.tony4ai.com/DIP-2-3-FFT算法理解与c语言的实现 ...

  9. 关于FFT的一些理解,以及如何手工计算FFT加深理解和验证正确性

    总结缺少逻辑性和系统性,主要便于自己理解和记忆 关于一维FFT的 于是复系数Cn是图像傅里叶变换的yn列向量 于是我们看到最后引入,Cn这个复系数的模来表征频率波的振幅记为Sn(即简谐波叠加的数量 然 ...

随机推荐

  1. 20170706xlVBA批量提取word表格中的自我评分

    单位里普遍存在各种低效率的办公行为,比如每年的自我评分.评分细目表为word文档,每行一个项目,每个项目要填写得分事项和分值,组长审核之后转成Excel向上递交.主要涉及到问题就是word文档中一列得 ...

  2. uva11388

    因为a,b整除gcd(a,b),lcm(a,b)又整除a,b,因此如果lcm不整除gcd就是-1:否则的话,lcm=a*b/gcd.而a不能小于gcd,因此a就取gcd,b取lcm. #include ...

  3. 关于OkHttp同步请求的小错误

    今天进行OkHttp的同步请求 写的都是按照官方的去写的 但是返回的东西却不是我想要的 原因是我直接拿到Response后,直接Response.toString,想要拿到返回值 但是这样是错误的,正 ...

  4. 走起 ~私有gitlab

    1.创建gitlab 账号,创建一个项目名称  地址:http://git.limikeji.com 2.配置git环境 用git命令上传代码 3.配置gitlab ssh 4.使用git命令上传代码 ...

  5. centos7 keepalived+nginx实现vip漂移高可用

    一.Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前 ...

  6. C# 条件表达式max=(a>b)?a:b;含义

    a?b:c 这个是条件表达式,表示如果a为真,则表达式值为b,如果a为假,则表达式值为c条件表达式具体说明如下条件语句: if(a>b) max=a; else max=b; 可用条件表达式写为 ...

  7. IDEA Activiti Designer插件---actiBPM汉字乱码问题

    1.找到IDEA的安装目录 2.用编辑器打开,在文件末尾添加 -Dfile.encoding=UTF-8

  8. 一、J2EE

    一.HTTP协议中的响应代码 响应代码从1xx--5xx一共有41中.常见的 404:表示访问的页面不存在.这表示一个浏览器的错误,就是服务端没有提供这个服务,你却去访问.这个锅要算在浏览器头上,而不 ...

  9. 依赖注入 IOC

    首先,明确下IoC是什么东西: 控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控 ...

  10. cogs448

    ☆   输入文件:1.in   输出文件:1.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 在某次膜拜大会上,一些神牛被要求集体膜拜.这些神牛被奖励每人吃一些神牛果. ...