离散信号的FFT
来源:互联网 发布:网络歌手洛桑扎西歌曲 编辑:程序博客网 时间:2024/05/10 01:06
离散信号的FFT
- 我们知道一个信号的傅里叶变换就可以得到该信号的频谱,下面我们就通过matlab具体代码来感受这个过程。
实验分析
信号输入
t=0:0.01:2; x=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180) plot(x);
- 通过上述代码我们画出一个频率f为50hz(相角-30度)和频率f=100hz(相角90度)叠加的信号。
下面我们对这个信号进行采样:
fs=256;N=256; %采样频率和数据点数n=0:1:N-1;t=n/fs; %时间序列x=1 + 2*cos(2*pi*50*t-pi*30/180) + 3*cos(2*pi*100*t + pi*60/180); %信号figure, plot(t, x);
我们在这里设定采样频率为256hz, 选取256个采样点(方便计算机进行fft运算) 。我们把时间轴(横坐标)压缩到0到255/256这个范围之类。采样呢,就是相当于在连续函数y = 1 + 2*cos(2*pi*50*t-pi*30/180) + 3*cos(2*pi*100*t + pi*60/180)上, 从0秒开始,每隔1/256秒采集一个点,直到255/256秒结束,总共采集256个点的信息。
经过上述的采样后,一个连续的信号就被我们弄成了离散信号啦。相比较于原信号来说,经采样后的信息肯定有一点失真了,如果失真比较严重的话,自然要增加采样频率。
下面我们来对上面离散的信号做256点的fft
y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求得Fourier变换后的振幅f=n*fs/N; %频率序列figure, plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=128');grid on;这里我解释一下为什么频谱的横坐标设置成f=n*fs/N:我们要保证频谱的横坐标的单位是hz。试想采样频率是fs(hz),一共有N个采样点,那么每一点对应的采样频率的自然是fs/N(hz)啦。
- 上图是信号的幅频响应图,可见在频率为50和100赫兹时有很大的值,而其余接近为0。也就验证了信号的频率成分。
采样定理
- 这里的幅频响应为什么是对称的呢?离散信号的傅里叶变换时周期的,信号经过离散化(也就是采样)后,其频谱是原来信号频谱沿着采样频率左右搬移的结果,而这个搬移量就是采样频率fs,下面我们作图说明这点。
- 在这里我们不光能得到其频谱是周期的,同时观察其正半轴的频谱,还可以得到其第一个对称中心是采样频率的一半。结合之前信号的幅频响应图,由于我们设置的采样频率是256,所以对称中心就是128。
- 也许你会想到,如果采样频率过小。经过搬移后,和原信号的频谱不就会有重合吗?没错,下面我们画出经过不重叠且是最小的采样频率搬移的结果。
- 上图的采样频率确实是在不重叠的情况下最小的了,因为再小就重叠了。这里我们可以算出fs=2fmax。所以,要使采样后信号不重叠,其采样频率必须>=2fmax,这就是著名的采样定理。
ifft
回到我们对刚才的信号1 + 2*cos(2*pi*50*t-pi*30/180) + 3*cos(2*pi*100*t + pi*60/180)做fft的结果上去。我们知道其幅频响应会在50和100hz达到一个较大的值。我们观察经过fft后的第50个点的值:221.702503368816 - 128.000000000000i。
我们求得这个复数值的幅值为:√(221.7平方+128平方)=256
相角为:arctg(-128/221.7) = -30°
直流分量是fft后的值是256。
第100个点的复数算出的幅值是:384
像角是:180°直流分量的就是N,50hz对应的幅值为2*N/2,100hz对应的幅值为3*N/2。再根据相位信息我们就可以反推出原始信号啦。
1 0
- 离散信号的FFT
- 利用FFT 计算生成离散解析信号
- FFT是离散傅立叶变换将信号变换到频域
- 离散FFT和图像二维FFT变换的java实现
- 离散正(余)弦信号的时域与FFT变换后所得频域之间的关系(幅值和相角)
- 离散正(余)弦信号的时域与FFT变换后所得频域之间的关系(幅值和相角)
- 如何采用fft分析信号的频谱
- Android平台音频信号FFT的实现
- 再续FFT:信号的频谱分析
- FFT离散傅立叶变换
- matlab中如何绘制离散点的fft的图
- 离散傅里叶的MFC算法详解(DFT,FFT,DCT)
- 离散时间序列的内插算法(利用fft)
- 【HDU】5958 New Signal Decomposition【离散对数下的FFT】
- 1.3 离散信号的频域分析
- 信号的采样时间长短对FFT变化的影响
- 用FFT估计单频正弦信号的幅度
- 利用FFT对模拟信号进行谱分析的参数选择
- 面试之集合
- java关键字 #assert
- gdb如何调试多线程以及多进程
- ORACLE 查看RMAN的备份信息总结
- 绝大多数公司的服务器为什么偏向使用Linux系统?
- 离散信号的FFT
- Android 事件分发机制
- wmapServer 自定义根目录
- [Haskell on HackerEarth] Roy and Profile Picture
- 菱形继承的内存布局是怎么回事呢?访问时,又会出现什么情况?
- bzoj1023(仙人掌直径,圆方树)
- Oracle技术之用RMAN克隆数据库
- VS 中如何添加dll lib文件
- Visual Studio 属性窗口 和 错误列表窗口