我是靠谱客的博主 深情板凳,这篇文章主要介绍FFT变换频谱图中幅值的设置方法,现在分享给大家,希望可以做个参考。

按照上篇博文所画出来的频谱图中,原信号的每个频率是准确地找出来了,但是各个频率点所对应的的幅值可不是原信号中真正的幅值,因为在进行DFT(FFT)变换的时候,已经把幅值改变了,要想让频谱图的纵坐标显示为原信号中真正的幅值其实也很简单,代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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的关系。

接下来再看一个例子:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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]);

在这里插入图片描述

最后

以上就是深情板凳最近收集整理的关于FFT变换频谱图中幅值的设置方法的全部内容,更多相关FFT变换频谱图中幅值内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部