2014-06-25 123 views
0

我對使用MATLAB過濾器比較陌生。我嘗試使用以下命令加速MATLAB過濾命令

rrc = rcosdesign(0.25, 10, floor(Fs/symRate), 'sqrt'); 
filtered = filter(rrc, 1, samples); 
filtered = filtered/sqrt(floor(Fs/symRate)); 

當我運行MATLAB事件探查器來過濾一個相當大的數據集(約2萬個數據點),它說行

filtered = filter(rrc, 1, samples); 

接管500秒跑步。任何想法如何加快這一點?我嘗試過使用我在網上找到的FilterM函數(http://www.mathworks.com/matlabcentral/fileexchange/32261-filterm),但它需要相同的時間。任何人有任何想法?

在此先感謝

回答

2

幾點思考:

  1. 如果你有FIR濾波器(當它從代碼似乎),你可能會獲得使用conv2它採用了英特爾IPP這可能會加快速度性能。使用「有效」標誌獲得filter結果。
  2. 如果過濾器很長且數據很長,請嘗試使用xcorr,因爲它使用FFT來加速相關性。由於您在過濾之後,請記得翻轉您的過濾係數。
  3. 編譯filterX使用Visual Studio 2013或甚至更好的英特爾C編譯器2013與優化標誌(/03)。使用它時,直接使用filterX命令(跳過FilterM包裝)。
  4. 手動使用FFT執行卷積。
  5. 創建英特爾MKL/Intel IPP過濾器功能的MEX版本。

其中任何一項都應該有很大的幫助。

+0

很酷,謝謝!我會嘗試其中的一些 –