FFT变换频谱图中幅值的设置方法
2018-10-21 21:13
40 查看
版权声明:本文为博主原创文章,如需转载,请注明出处 https://blog.csdn.net/qq_36554582/article/details/83245462
更改为:
按照上篇博文所画出来的频谱图中,原信号的每个频率是准确地找出来了,但是各个频率点所对应的的幅值可不是原信号中真正的幅值,因为在进行DFT(FFT)变换的时候,已经把幅值改变了,要想让频谱图的纵坐标显示为原信号中真正的幅值其实也很简单,代码如下:
clear all fs=150;%采样频率要大于等于原信号中最高频率的二倍 N=150; t=(0:N-1)/fs; y=0.5*sin(2*pi*65*t)+0.8*cos(2*pi*40*t)+0.7*cos(2*pi*30*t); F=fft(y,N); freq=(0:N/2)*fs/N;%只画(0,fs/2)范围内的频率分量,起始坐标是0,因为只有(0,fs/2)范围内的频率才有意义,因为原信号的最大频率小于等于fs F1=abs(F(1:N/2+1));%频谱图中各频率点对应的幅值并不是原信号中真正的幅值 F2=abs(F(1:N/2+1))*2/N;%频谱图中各频率点对应的的幅值就是原信号中真正的幅值 subplot(211) stem(freq,F1,'k');%依据频率坐标来绘制傅里叶变换后的信号的频率-幅度谱,注意F的起始坐标是1 xlabel('频率(Hz)'); ylabel('幅值'); xlim([0 130]); subplot(212) stem(freq,F2,'k'); xlabel('频率(Hz)'); ylabel('幅值'); xlim([0 130]);
运行结果:
我们只需要把之前的语句
F1=abs(F(1:N/2+1));
更改为:
F2=abs(F(1:N/2+1))*2/N;即可,也就是说FFT变换后的各频率点对应的幅度和原信号真正的幅度就相差了一个2/N或者说是N/2的关系。
接下来再看一个例子:
clear all fs=15000;%采样频率要大于等于原信号中最高频率的二倍 N=15000; t=(0:N-1)/fs; y=0.5*sin(2*pi*1000*t)+0.8*cos(2*pi*3000*t)+0.7*cos(2*pi*6000*t); F=fft(y,N); freq=(0:N/2)*fs/N;%只画(0,fs/2)范围内的频率分量,起始坐标是0,因为只有(0,fs/2)范围内的频率才有意义,因为原信号的最大频率小于等于fs F1=abs(F(1:N/2+1));%频谱图中各频率点对应的幅值并不是原信号中真正的幅值 F2=abs(F(1:N/2+1))*2/N;%频谱图中各频率点对应的的幅值就是原信号中真正的幅值 subplot(211) plot(freq,F1,'k');%依据频率坐标来绘制傅里叶变换后的信号的频率-幅度谱,注意F的起始坐标是1 xlabel('频率(Hz)'); ylabel('幅值'); xlim([0 8000]); subplot(212) plot(freq,F2,'k'); xlabel('频率(Hz)'); ylabel('幅值'); xlim([0 8000]); ylim([0 1]);
阅读更多
相关文章推荐
- matlab fft变换 分析频谱
- 离散正(余)弦信号的时域与FFT变换后所得频域之间的关系(幅值和相角)
- FPGA - FFT频谱分析 - 测量频率和幅值
- 离散正(余)弦信号的时域与FFT变换后所得频域之间的关系(幅值和相角)
- button设置可以变换的背景及其容易遇到的问题解决方法
- FFT变换中的频谱泄露问题研究
- IIS7/IIS7.5 二级域名伪静态设置方法
- 不能设置类range的columnwidth属性 解决方法
- WINDOWS服务器自动定时重启设置方法
- Python实现爬虫设置代理IP和伪装成浏览器的方法分享
- WEB页面打印方法,包括如何设置打印分页
- jQuery 获取、设置HTML或TEXT内容的两种方法
- 全局变量的设置和读取方法 (asp.net C#)
- Yahoo邮箱POP3设置方法[转]
- win8自动登录如何设置 2种WIN8自动登陆设置方法教程
- js使用html()或text()方法获取设置p标签的显示的值
- Dell_R410_CRTL+R型阵列卡设置方法
- IIS 配置伪静态页html URL Rewrite 的设置方法
- TP-link 无线路由器WDS设置方法图解_无线桥接设置 wifi无线变有线路由 中转站
- 家用路由器设置方法