TA的每日心情 | 擦汗 2024-12-25 23:22 |
---|
签到天数: 1182 天 [LV.10]大乘
|
本帖最后由 雷达 于 2022-9-23 06:29 编辑 ( t! |! s$ A5 {0 d; K& l, W! ^& S
! I- b7 C3 z- }9 m$ N# L
做一个数字信号处理的小算法,需要算互相关。
, z6 k0 q1 D9 g6 t先用 Octave (兼容matlab 那个东东) 做了一下,感觉慢,走通后就用C++ 重写,结果比 Octave 还慢,目测能慢10倍,很不科学啊。
9 \4 Q$ i& \3 [; \ U: s) J0 |" U% M
5 i/ B# [3 ^, ]: LOctave的互相关有现成函数 xcorr, C++ 需要自己写。互相关是一个一维矢量和一个二维数组里的矢量依次做。矢量里是复数数据,没有用 STL,自己做了个 Re/Im 的struct,其实就是两个四字节 float 。
3 y! ]6 U; P8 M0 C互相关的最基本运算是两个复数的乘法,就是四次 float 乘法再相加,所以本质上影响速度的应该就是 float 乘法和加法。0 H8 ?; _- X% q' k6 l4 I$ A# |
5 y \) U2 U" l, Q* a
C++ 用的是VS 社区版,估计编译器不给力,但也不至于差这么多啊。0 s0 T, v1 t" U. B1 W: X! T( k
; |) u& o2 ]5 d高手们给分析分析, 多谢了。- g- y. U# I3 }* E$ l! T, J2 K( }
|
评分
-
查看全部评分
|