我对使用MATLAB过滤器相对较新。我正在尝试使用以下命令过滤相当大的数据集(大约200万个数据点)
rrc = rcosdesign(0.25, 10, floor(Fs/symRate), 'sqrt');
filtered = filter(rrc, 1, samples);
filtered = filtered / sqrt(floor(Fs/symRate));
当我运行MATLAB Profiler时,它表示行
filtered = filter(rrc, 1, samples);
需要超过500秒才能运行。关于如何提高速度的任何想法?我尝试过使用我在网上找到的FilterM函数(http://www.mathworks.com/matlabcentral/fileexchange/32261-filterm),但它需要相同的时间。其他人有什么想法吗?
提前致谢
答案 0 :(得分:2)
几点想法:
conv2
获得性能,该filter
使用可能加快速度的英特尔IPP。使用“有效”'标记以获得xcorr
结果。filterX
,因为它使用FFT来加速相关性。由于您在过滤后进行操作,请务必翻转滤镜系数。/03
,或使用优化标记(filterX
)编译更好的英特尔C编译器2013。使用时,请直接使用FilterM
命令(跳过{{1}}包装器。)任何这些都应该有很大帮助。