Re: [問題] FFT後再經過IFFT轉回原訊號已回收

看板MATLAB作者 (juzn)時間15年前 (2010/04/06 21:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《ice1229 (ice1229)》之銘言: : 如題,小弟首先先對原訊號作FFT後圖為 : t=0:0.001:0.6; %採樣週期為0.001秒 : x=sin(2*pi*50*t)+sin(2*pi*120*t); %產生正弦波 : y=x+2*randn(size(t)); %疊加隨機噪音 : subplot(2,1,1) %畫出y的曲線 : plot(y(1:50)) : y=fft(y,512); %對y作傅立葉轉換,取512點 這邊建議用 Y=fft(y,512); 避免y資料被覆蓋 : f=1000*(0:256)/512; %設頻率為軸座標,1000是採樣頻率 : subplot(2,1,2) %畫出頻率圖形 : plot(f,y(1:257)) 這邊頻率秀圖 建議改成plot(f,abs(y(1:257))/1000) : 問題來了,接下來我想把加進去的50 120 以IFFT消除後 不太懂上面這句話 是指要消除雜訊 留下50與120Hz的脈衝然後用ifft還原 還是要消除50與120Hz脈衝然後還原? : 還原原來的信號,怎麼試都不對,這邊的話麻煩可以指點迷津嗎? : 拜託各位了... 不管是哪個 都可以寫一個理想的濾波器來解 舉例: 想要留下50Hz訊號時 當f=50Hz時 => n=50*512/1000=25.6 取整數可知 n=25~26 固可設計一濾波器 H 令其在 24~28與484~488 的位置時為1 其餘位置為0 即H=[zeros(1,23),ones(1,5),zeros(1,455),ones(1,5),zeros(1,24)] 再讓 Y_bp = Y.*H; 如此Y_bp即為只留下50Hz的訊號 再做ifft 即可 其他情況 可以修改上面方法即可 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.0.181 ※ 編輯: juzn 來自: 134.208.0.181 (04/06 21:50)
文章代碼(AID): #1BkpM-Ya (MATLAB)
文章代碼(AID): #1BkpM-Ya (MATLAB)