| 查看: 3911 | 回复: 0 | ||
xiashaoyan新虫 (正式写手)
|
[求助]
fftshift和ifftshift的使用场合,求助大神,这个问题已经困扰很久了~~
|
|
我知道,fftshift和ifftshift对于偶数长度的数组,两者无区别;对于奇数长度数组,fftshift相当于把数组的第一个放到数组中间,而ifftshift则是把最后一个放到中间。但是在用fft进行滤波等处理时,什么时候用fftshift或ifftshift感到很糊涂了,因为这个问题已经遇到很多次了. 现在想实现对一组数据进行低通滤波,代码如下: Nf = 2^12; xAxisf = linspace(-10,10,Nf); % plot(xaxis, data); % FFT xsize = numel(data); Xf = zeros([1 Nf]); indices = Nf/2-floor(xsize/2):Nf/2-floor(xsize/2)+xsize - 1; Xf(indices) = data; % Xf = fftshift(Xf); Xf = fft(Xf); Xf = fftshift(Xf); % plot Xfa = abs(Xf); plot(xAxisf, Xfa); % generate super-gaussian filter function Nf = numel(Xf); widthfilter = 0.12; filterpower = 2; filter = exp(-(xAxisf.^2./widthfilter^2).^filterpower); % filter filtertimes = 20; Xf = Xf .* filter.^filtertimes; % plot Xfa = abs(Xf); plot(Xfa); % iFFt Xfs = ifftshift(Xf); Xif = ifft(Xfs); % Xif = ifftshift(Xif); result = abs(Xif); plot(result(indices)) 现在针对这个程序,我有一些疑问,希望大家能帮忙看看,谢谢大神门了!! 问题1: 在fft用之前,不需要用fftshift对data进行操作吗?就像如下操作: Xf = fftshift(data); % NOT NEEDED??? Xf = fft(Xf); 问题2: 程序中是用ffitshift对Xf操作的(Xf = fftshift(Xf)),我想为什么不能用ifftshift操作呢? 问题3: 在使用ifft之前,为什么用ifftshift操作呢?(Xfs = ifftshift(Xf) 而不是用ffishift呢?问题4; Xif = ifft(Xfs)反傅里叶变换之后,要用iffshift操作吗?如果需要,为什么不是用ffishift呢? 其实,问题总的来说,就是fftshift和ifftshift在什么场合下使用,为什么有时候用fftshift操作,而不是用ifftshift操作呢?或者为什么有时候用ifftshift操作,而不是用fftshift操作呢? |
» 猜你喜欢
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有6人回复
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复













而不是用ffishift呢?
回复此楼