移位定理说:对于一个整数m,将$ x_n $乘以线性相位$ e ^ {\ frac {2 \ pi i} {N} nm} $对应于输出$ X_k $:$ X_k $的循环移位由$ X_ {km} $代替,其中下标以N为模(即,周期性地)解释。可以正常工作:

plot a




N = 9
k = [0, 1, 2, 3, 4, 5, 6, 7, 8]
plot ifft(fft(a)*exp(-1j*2*pi*3*k/N))



正如我所期望的那样,有3个样本。

我认为您也可以这样做以按样本的几分之一偏移,但是当我尝试时,我的信号变得虚构而不完全像原始的一样: />
plot real(ifft(fft(a)*exp(-1j*2*pi*3.5*k/N)))
plot imag(ifft(fft(a)*exp(-1j*2*pi*3.5*k/N))), 'b--'




我根本没想到这一点。这难道不等于卷积3.5个样本后得到的真实脉冲?因此,冲动应该仍然是真实的,而结果应该仍然是真实的?它应该具有与原始形状大致相同的形状,但是正弦插值吗?

评论

这是一份Matlab文件交换提交内容,可为偶数/奇数长度的实际/复数信号计算正确的调制并对其进行分数延迟:mathworks.com/matlabcentral/fileexchange/7886-fshift

#1 楼

如果要使IFFT的移位输出为实数,则频域中的相位扭曲/旋转以及数据必须共轭对称。对于给定的相位斜率,可以通过在复数exp()的指数上添加适当的偏移量来实现,以使上半部分(或负半部分)的模2 Pi的相位与FFT孔径的下半部分镜像。也可以通过将零从零开始在-N / 2到N / 2的索引在索引0处,使复数指数移位函数共轭对称。完全等于孔径2 Pi旋转的整数倍的光圈或螺线在孔径上是共轭对称的,为零。非整数移位的圆形Sinc插值。

通过OP进行细化:

您选择的k = [0、1、2、3、4、5、6, 7,8]产生一个不对称的复指数:



如果使用k = [0,1,2,3,4,-4,-3, -2,-1]相反,您会得到一个Hermite对称的复数指数:指数公式移动0.5或3.5个样本,您将获得真实结果:

plot(fftshift(exp(-1j * 2*pi * 0.5/N * k)))




评论


$ \ begingroup $
哈哈!代替k = [0,1,2,3,4],我应该使用k = [0,1,2,-2,-1]
$ \ endgroup $
– Endolith
2013年8月9日13:33

$ \ begingroup $
@endolith / hotpaw2,换句话说,都是关于时域样本的索引编制吗?
$ \ endgroup $
– TheGrapeBeyond
2013年8月9日14:58

$ \ begingroup $
即使N / 2不是整数,围绕bin 0的对称也将提供围绕N / 2的对称。
$ \ endgroup $
– hotpaw2
2015年8月5日在20:19

$ \ begingroup $
我发现了一个在Matlab文件交换上应用正确调制的函数:mathworks.com/matlabcentral/fileexchange/7886-fshift👏!
$ \ endgroup $
–艾哈迈德·法西(Ahmed Fasih)
2015年8月6日15:39

$ \ begingroup $
同样适用于复杂信号吗?
$ \ endgroup $
–狮子座
17年8月24日在14:30