本文来自于HELLODSP。
看见有朋友问起DSP如何实现移相,我想软件实现的方法应当比硬件实现来的简单,而且也能节约成本,一时兴起,详细研究了一下,在这里和大家分享,也希望大家能够批评指正。
我们从下面的图讲起,有两个波形,y1和y2,y2是在y1的基础上移动了B度。由于不知道如何输入角度,就用A和B来代替图中的角度标示。
假定y1在进行傅立叶变换后表示为:y1=y1.R+jy1.X
假定y2在进行傅立叶变换后表示为:y2=y2.R+jy2.X
而同时,我们知道,y1可以表示为:
y1=Ye^(jA)
y2可以表示为:
y2=Ye^(j(A-B))
因此,
y1=Y(sinA+jcosA)
与前面的对照之后,我们可以得到:
y1.R=YsinA
y1.X=YcosA
同理,
y2=Y[sin(A-B)+jcos(A-B)],这样
y2.R=Ysin(A-B)=YsinAcosB-YcosAsinB
y2.X=Ycos(A-B)=YcosAcosB+YsinAsinB
这样,我们将y1代人,就会有
y2.R=y1.R*cosB-y1.X*sinB
y2.X=y1.R*sinB+y1.X*cosB
至此,我们就实现将y1移相B度了。值得注意的是移动的方向。
在实际操作的过程中,用采样点计算出傅立叶变换,然后再用上述的公式变换就可以了。
不知道我有没有讲明白