使用Matlab实现信号运算的FFT的频谱分析
前面我们已经利用fft工具对单个信号进行了时域和频域的转换,从不同的角度对信号进行了分析,但是,在实际项目工作中,单一信号的情况还是比较少的,一方面干扰无处不在,另一方面,电路的工作也会引入不同的工作噪声,例如开关电源的开关噪声,使用交流电的工频噪声等等,还有的信号是工作的辅助信号,例如载波通信的载波信号等,这些信号往往和我们要分析的信号作何在一起,为我们的正确分析带来困难,本文从信号运算的角度,对不同信号的运算对频谱的影响进行定量的分析,给出相应的处理方案。
基础信号
我们先定义两个信号,分别为50Hz的工频信号和833Hz的正弦波信号,对应的幅度分别为A和A833,相位为P1和P2,在mathlab中实现如下:
A=220; %频率F1信号的幅度
A833=10; %频率F2信号的幅度
F1=50; %信号1频率(Hz)
F2=833; %信号2频率(Hz)
Fs=6400; %采样频率(Hz)
P1=-30; %信号1相位(度)
P2=90; %信号相位(度)
N=6400; %采样点数
t=[0:1/Fs:N/Fs]; %采样时刻 0到N个点
%信号
y_sin = A * (sin(2*pi*F1*t+pi*P1/180)); %// Make a square wave
y_sin833 = A833*(sin(2*pi*F2*t+pi*P2/180)); %// Make a square wave
分别对y_sin和y_sin833做fft,对应的频谱图分别为:
和
均为单一的谱线,位置分别在50hz和833hz的位置上。
信号的加法运算对频谱的影响
构建新函数:
Sadd = y_sin833+ y_sin
时域下波形图如下:
局部放大后:
可以看到,时域波形有幅度上的叠加,对此做fft,频谱如下:
可以看出频谱图就是两个单频率频谱的叠加。
信号的减法运算对频谱的影响
构建新函数:
Sadd = y_sin833 - y_sin
在时域图中,我们同样可以看到幅度算术叠加运算的结果:
对此做fft,频谱如下:
频谱图和加法是一样的,说明,算术的加减法运算,对信号的频谱是没有影响的。
信号的乘法运算对频谱的影响
构建函数:
Smul = y_sin833 .* y_sin
在时域下,波形图如下:
局部放大后,
对乘积信号做fft分析,其频谱图为:
可以看到,频率谱线50hz和833hz都没有了,而是出现了2个新频率783hz和883hz,分别为:833-50hz和833+50hz的频率,这就是fft中著名的频移现象,感兴趣的朋友可以参考fft原理,在实际中,相当于信号y_sin833对信号 y_sin的 幅度调制 ,调制后的信号Smul 的频谱是原来信号y_sin833的频谱频移了y_sin的频率,如上图。当然,可以利用这个原理将信号的频谱从高频搬回到低频,也可以反过来从低端移动到高端,从而实现了信号的调制与解调。
信号的除法运算对频谱的影响
同理,我们也可以构建函数:
Sdiv = y_sin833 / y_sin
其频谱仿真结果如下图:
这只具有数学上的意义,不在赘述。
信号的卷积运算对频谱的影响
更复杂一点的,卷积运算:
S = conv2(y_sin833 , y_sin)
时域图:
频谱图:
可以看到,833hz的频谱已经超过50hz的了,什么原理昵?欢迎朋友们沟通讨论。