选带傅里叶变换的原理大家能够看书。大致的步骤为

  1. 移频 (将选带的中心频率移动到零频)
  2. 数字低通滤波器  (防止频率混叠)
  3. 又一次採样  (将採样的数据再次间隔採样,间隔的数据取决于分析的带宽,就是放大倍数)
  4. 复FFT (因为经过了移频,所以数据不是实数了)
  5. 频率调整 (将负半轴的频率成分移到正半轴)

程序例如以下:

function [f, y] = zfft(x, fi, fa, fs)
% x为採集的数据
% fi为分析的起始频率
% fa为分析的截止频率
% fs为採集数据的採样频率
% f为输出的频率序列
% y为输出的幅值序列(实数) f0 = (fi + fa) / 2; %中心频率
N = length(x); %数据长度 r = 0:N-1;
b = 2*pi*f0.*r ./ fs;
x1 = x .* exp(-1j .* b); %移频 bw = fa - fi; B = fir1(32, bw / fs); %滤波 截止频率为0.5bw
x2 = filter(B, 1, x1); c = x2(1:floor(fs/bw):N); %又一次採样
N1 = length(c);
f = linspace(fi, fa, N1);
y = abs(fft(c)) ./ N1 * 2;
y = circshift(y, [0, floor(N1/2)]); %将负半轴的幅值移过来
end

应用实例:

fs = 2048;
T = 100;
t = 0:1/fs:T;
x = 30 * cos(2*pi*110.*t) + 30 * cos(2*pi*111.45.*t) + 25*cos(2*pi*112.3*t) + 48*cos(2*pi*113.8.*t)+50*cos(2*pi*114.5.*t);
[f, y] = zfft(x, 109, 115, fs);
plot(f, y);

效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

最新文章

  1. Spring MVC 使用HiddenHttpMethodFilter配置Rest风格的URL
  2. MySQL函数操作数据库
  3. hdu4087ALetter to Programmers(三维旋转矩阵)
  4. Android开发学习之路-自定义ListView(继承BaseAdapter)
  5. SDUT 2772 数据结构实验之串一:KMP简单应用
  6. hdu 4159 Indomie (DP,数学概率)
  7. IIS 中asp.net的一些配置
  8. Ping命令详解
  9. python2.x 使用protobuf
  10. onmouseover事件
  11. CSS常用Hack集合(adding)
  12. SSH防爆破脚本
  13. fuel一键部署openstack
  14. [STM32F103]串口UART配置
  15. 小型音乐播放器插件APlayer.js的简单使用例子
  16. [翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置
  17. windows的tasklist使用
  18. 二进制安装mysql
  19. Revit Family API 创建参考平面
  20. asp.net 中用easyui中的treegird的简单使用

热门文章

  1. pycharm 用远程环境时报错bash: line 0: cd: /home/tmp: No such file or directory
  2. 在Foxmail邮件客户端登录263企业邮箱
  3. HDU-1297-Children’s Queue
  4. nginx 获取真实ip
  5. rpm 包管理器
  6. python基础教程之pymongo库
  7. Python爬虫-代理池-爬取代理入库并测试代理可用性
  8. SpringMVC中的几种事务管理器
  9. Mybatis中实体类属性和数据列之间映射的四种办法
  10. 电源模块PCB设计