声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2845|回复: 5

[综合] 离散信号时域平移的频域处理matlab仿真问题???

[复制链接]
发表于 2010-3-20 19:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
把前面tommy321 的问题引申了一下

利用DFT的时移特性。将信号x[n]变换到频域的X[k],
X[k]乘以一指数函数反变换到时域的x[n-n0]。
x[n]  <--->  X[k]
x[n-n0]  <--> X[k]exp(-j2*pi*n*fs/N*n0)

matlab程序如下:
clc;
clear;
close all;

fs = 1000;
N = 256;
df = fs/N;
n = 0:N-1;
n_shift = 11;                %时移因子

f0 = 100;
f1 = 120;

x = sin(2*pi*f0*n/fs)+sin(2*pi*f1*n/fs);
X_fft = fft(x,N);
X_fft_1 = X_fft.*exp(-j*2*pi*n*df*n_shift);
x_delay=real(ifft(X_fft_1,256));

figure(1)
subplot(2,1,1)
plot(x);
axis([0 100 -2 2]);
subplot(2,1,2)
plot(x_delay);
axis([0 100 -2 2]);


问题:
1、为何时移因子n_shift为偶数时,时移正确。
   例如n_shift=2时,x_delay[n]=x[n-2]
   时移因子n_shift为奇数时,时移错误。
    例如n_shift=3时,x_delay[n] /= x[n-3]

2、程序中
   X_fft = fft(x,N);
    X_fft_1 = X_fft.*exp(-j*2*pi*n*df*n_shift);
    x_delay=real(ifft(X_fft_1,256));
用到了real函数,
想搞清楚到底是什么原因造成了ifft(X_fft_1,256)为复数。是有限字长效应吗
回复
分享到:

使用道具 举报

 楼主| 发表于 2010-4-2 17:56 | 显示全部楼层

回复 楼主 attentionq 的帖子

知道原因了,代码写的有问题
发表于 2010-4-2 23:42 | 显示全部楼层
楼主,能不能把问题处理后的代码传上来,让我大家都学习一下?
发表于 2010-4-4 07:19 | 显示全部楼层
发表于 2010-4-4 13:50 | 显示全部楼层

回复 地板 小天775 的帖子

不要都是"嗯..."
说说想法/看法吧
 楼主| 发表于 2010-4-6 17:17 | 显示全部楼层
X_fft_1 = X_fft.*exp(-j*2*pi*n*df*n_shift);
这里改为
X_fft_1 = X_fft.*exp(-j*2*pi/N*n*n_shift);
即可
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 14:30 , Processed in 0.055343 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表