选带傅里叶变换(zoom-fft)
来源:互联网 发布:数控加工编程实例 编辑:程序博客网 时间:2024/06/05 01:06
选带傅里叶变换的原理大家可以看书。大致的步骤为
- 移频 (将选带的中心频率移动到零频)
- 数字低通滤波器 (防止频率混叠)
- 重新采样 (将采样的数据再次间隔采样,间隔的数据取决于分析的带宽,就是放大倍数)
- 复FFT (由于经过了移频,所以数据不是实数了)
- 频率调整 (将负半轴的频率成分移到正半轴)
程序如下:
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.5bwx2 = 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);
效果:
1 0
- 选带傅里叶变换(zoom-fft)
- FFT快速傅里叶变换-递归版-带注释模板
- 快速傅里叶变换(FFT)(ZZ)
- FFT快速傅里叶变换;
- 快速傅里叶变换(FFT)
- 关于FFT快速傅里叶变换
- opencv 中 傅里叶变换 FFT
- opencv 中 傅里叶变换 FFT
- FFT快速傅里叶变换
- FFT - 快速傅里叶变换
- 快速傅里叶变换(FFT)
- 快速傅里叶变换(FFT)
- GSL快速傅里叶变换FFT
- opencv 中 傅里叶变换 FFT
- 快速傅里叶变换FFT
- 【数学】快速傅里叶变换(FFT)
- FFT 快速傅里叶变换 初探
- 快速傅里叶变换(FFT)
- 面向对象开发工具类、管理类、业务类 使用
- Rust中文翻译20
- Fibonacci [java重学]
- WordPress不同分类使用不同的文章模板
- GCD 信号量
- 选带傅里叶变换(zoom-fft)
- Java 正则表达式详解
- Webview的Cookie和缓存处理
- bzoj4172: 弹珠
- wordpress利用CSS让每个页面都不一样
- 很方便的上传下载文件工具rz和sz
- J2EE框架——Hibenate简介
- android 混合型json格式文件生成 代码
- 利用XML聚合字符串