Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-03-15, 18:22   #1
sauce
初级会员
 
注册日期: 2008-03-15
年龄: 41
帖子: 1
声望力: 0
sauce 正向着好的方向发展
默认 【求助】求教逆傅立叶变换产生复数的问题

matlab中
n=0:63
n=n*2*pi/64
s=sin(n+2)
S=fft(s)
R=S./exp(j*2*n) 因为 R(K).*exp(j*2*n)=S(k)所以 R(k)=S(k)./exp(j*2*n)
r=ifft(R)
为什么求出的值r(n)是复数 而不是sin(n)

大虾们 教教我吧
sauce 当前离线   回复时引用此帖
旧 2008-03-15, 19:53   #2
chener1980
初级会员
 
注册日期: 2008-03-15
年龄: 45
帖子: 2
声望力: 0
chener1980 正向着好的方向发展
默认

1.首先我建议你查一下信号系统中的变换公式,证实一下你给出的这个推导是否正确“R(K).*exp(j*2*n)=S(k)所以 R(k)=S(k)./exp(j*2*n)”。我的印象是时域乘以复正弦因子等于频域的搬移,反过来的变换好像不是这样,由于我手头没信号系统这本书所以没法查实,见谅;
2.其次我想说明ifft的结果,即使你给它输入的是一个正弦的FFT结果,经过IFFT输出也仍然是一个复数变量,这是因为IFFT它本身就是一个复数傅立叶变换,各级的乘数因子都是复数,结果自然是复数变量,但是我们要看虚部变量值的大小,是一个很小很小几乎等于0的值,真正起决定作用的仍是在实部较大的值,因此,它实际是一个实变量值存在一个复数变量类型中。我们不能根据存储变量的类型来判断结果是否正确,要看真正起作用的是什么。
chener1980 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 17:30


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.