[討論] 學長寫的fft轉換 低通濾波的fft

看板MATLAB作者 (MatrixTree)時間11年前 (2013/10/17 11:18), 編輯推噓12(12029)
留言41則, 6人參與, 最新討論串1/1
由於訊號具有雜訊(高頻項) 因此學長寫了fft轉換來濾掉高頻 但是我查了書本以及網路上的一些解釋 還是不太懂這一行code的意義 a=fftshift(fft(fftshift(x))); 所以請大大幫忙解答>< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.146.15

10/17 11:29, , 1F
因為fft是從頻率0開始 但你x如果其實是附的頻率開始就要
10/17 11:29, 1F

10/17 11:30, , 2F
像這樣shift~這是用FFT近似CFT常遇到的 只是他shift的好
10/17 11:30, 2F

10/17 11:30, , 3F
像怪怪的 如果x是偶數個當然沒差 但如果是奇數的話應該會
10/17 11:30, 3F

10/17 11:30, , 4F
差一點點
10/17 11:30, 4F

10/17 11:31, , 5F
好像應該是fftshift(fft(ifftshift(x)));才通用
10/17 11:31, 5F

10/17 11:44, , 6F
這是為了讓本來很rush的譜線能夠更平滑 所以使用
10/17 11:44, 6F

10/17 11:47, , 7F
所以學長才想這個方式 但他也不知道怎麼解釋
10/17 11:47, 7F

10/17 12:49, , 8F
記得是跟matlab的定義有關 你這樣只有fft 跟濾波沒有關係
10/17 12:49, 8F

10/17 13:12, , 9F
樓上說的沒錯這跟濾波沒關 跟平滑也沒有關係
10/17 13:12, 9F

10/17 13:25, , 10F
那這條code的意義是什麼呢? 濾波的code我沒放@@"
10/17 13:25, 10F

10/17 13:41, , 11F
難怪 這code就只是fft而已 做完應該只要shift一次就好 @@
10/17 13:41, 11F

10/17 13:41, , 12F
兩次我就不知道了 by自己的經驗
10/17 13:41, 12F

10/17 19:15, , 13F
做之前不用shift吧,我看只有他自己懂
10/17 19:15, 13F

10/17 23:02, , 14F
為何大家不看我推文QQ 如果x定義是從負的頻率開始 就是
10/17 23:02, 14F

10/17 23:02, , 15F
x(1)對應到的頻率其實應該是負的 那fft前就需要shift
10/17 23:02, 15F

10/17 23:03, , 16F
而且通常這種負的頻率會跟正的頻率一樣多或差1個點
10/17 23:03, 16F

10/17 23:03, , 17F
把上面的頻率代換成時間也對
10/17 23:03, 17F

10/17 23:04, , 18F
因為fft的話你裡面x(1)對應到的頻率或時間應該是0
10/17 23:04, 18F

10/17 23:04, , 19F
理論上不是會對稱嗎? 不過我記得是做完再移就好
10/17 23:04, 19F

10/17 23:13, , 20F
上面那句前半段忽略好了 講得不夠嚴謹..要不要shift看需求
10/17 23:13, 20F

10/17 23:24, , 21F
剛剛去試原PO的方法 這樣相位好像會改變...
10/17 23:24, 21F

10/18 01:21, , 22F
可是假設他考慮x的頻率是-10:10好了 今天你不移直接下去
10/18 01:21, 22F

10/18 01:23, , 23F
就變成從0:20 會有問題 所以要利用他對稱的原理先把負的
10/18 01:23, 23F

10/18 01:23, , 24F
頻率的那些x移到最右邊 利用週期性這樣就跟從負的頻率開
10/18 01:23, 24F

10/18 01:23, , 25F
始加一樣了
10/18 01:23, 25F

10/18 02:58, , 26F
你拿來做fft的東西不是time domain嗎,shift是什麼意義?
10/18 02:58, 26F

10/18 08:27, , 27F
請問x是不是某信號的magnitude spectrum,然後濾波是針對a
10/18 08:27, 27F

10/18 08:28, , 28F
在濾完a後再ifft回頻域得到x",此x"為平滑化的x
10/18 08:28, 28F

10/18 08:29, , 29F
如果是這樣的話,我大概知道在做什麼了~頻譜x的平滑化
10/18 08:29, 29F

10/18 09:25, , 30F
時間序列的起點通常是0不是嗎? fft後就算要對頻率:-10~10
10/18 09:25, 30F

10/18 09:29, , 31F
prof是教授嗎?你講的很怪
10/18 09:29, 31F

10/18 09:30, , 32F
你先想一下Causality
10/18 09:30, 32F

10/18 09:33, , 33F
也是做完在shift一次 ..@@
10/18 09:33, 33F

10/18 11:00, , 34F
我不是教授 我是假設他時間是從負的開始才要shift 當然如
10/18 11:00, 34F

10/18 11:01, , 35F
果是causal的信號t<0都沒信號 x可以定義從t=0開始那就fft
10/18 11:01, 35F

10/18 11:01, , 36F
前不用shift
10/18 11:01, 36F

10/18 11:02, , 37F
因為我比較常用的是頻域轉時域 所以才會強調先shift
10/18 11:02, 37F

10/18 11:02, , 38F
的用意
10/18 11:02, 38F

10/18 11:04, , 39F
所以重點就是看他x的定義阿~我是因為看他原來的code有
10/18 11:04, 39F

10/18 11:04, , 40F
shift才假設他時間不是從0開始 當然他寫錯又另當別論了
10/18 11:04, 40F

10/20 12:10, , 41F
如pro所說 的確是要求-10->10的範圍 謝謝你們
10/20 12:10, 41F
文章代碼(AID): #1INrSIWB (MATLAB)
文章代碼(AID): #1INrSIWB (MATLAB)