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

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

  

最新文章

  1. 浅析Java.lang.Process类
  2. stanford coursera 机器学习编程作业 exercise 5(正则化线性回归及偏差和方差)
  3. JavaScript显示输出
  4. centos mysql 数据存储目录安装位置
  5. DLL中传递STL参数,vector对象作为dll参数传递等问题(转)
  6. POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
  7. Leetcode::Pathsum & Pathsum II
  8. 第32章 事件 - Identity Server 4 中文文档(v1.0.0)
  9. 活代码LINQ——04
  10. Linux上Simplescalar/ARM的安装和运行文档
  11. Day23-Model操作和Form操作-转载
  12. [控件] 创建出条形间隔效果的背景LineBackgroundView
  13. HBase(三)HBase架构与工作原理
  14. python之web框架(2):了解WSGI接口
  15. notepadd添加插件
  16. 解析XML:DOM,SAX,PULL
  17. 给大家推荐一款非常好用的表单验证插件:lr-verify.js
  18. 生产者-消费者问题:介绍POSIX线程的互斥量和条件变量的使用
  19. rails scaffold生成的crud显示自定义的列名
  20. 自动化测试===Macaca环境搭建,自我总结

热门文章

  1. python paramiko自动登录网络设备抓取配置信息
  2. python:extend (扩展) 与 append (追加) 之间的天与地
  3. 【实战问题】【2】Ambiguous mapping found. Cannot map 'xxController.Create' bean method
  4. 使用 com.alibaba.fastjson把json型数据解析成一个javabean
  5. NIO高性能框架-Netty
  6. redis sentinel哨兵模式集群搭建教程
  7. :after 写三角形 border
  8. oracle的case when的用法和decode函数的用法
  9. vs2015 出现Lc.exe 已退出,代码为-1的问题,如何解决
  10. Taking water into exams could boost grades 考试带瓶水可以提高成绩?