TA的每日心情 | 怒 2025-9-22 22:19 |
|---|
签到天数: 1183 天 [LV.10]大乘
|
本帖最后由 雷达 于 2022-9-23 06:29 编辑 . G, ?; C/ z: I
# i2 ?0 e3 v# ?% x( l
做一个数字信号处理的小算法,需要算互相关。
1 G' R4 U. G7 p" n/ o" i. W% h先用 Octave (兼容matlab 那个东东) 做了一下,感觉慢,走通后就用C++ 重写,结果比 Octave 还慢,目测能慢10倍,很不科学啊。
! u3 K% x4 F* P' [, d' D
8 y1 f% S( P- G& @3 `/ S; KOctave的互相关有现成函数 xcorr, C++ 需要自己写。互相关是一个一维矢量和一个二维数组里的矢量依次做。矢量里是复数数据,没有用 STL,自己做了个 Re/Im 的struct,其实就是两个四字节 float 。, f( u- M8 V3 K5 @8 ~$ K# K0 v
互相关的最基本运算是两个复数的乘法,就是四次 float 乘法再相加,所以本质上影响速度的应该就是 float 乘法和加法。+ u3 U) r- t6 s# P' U! z) m
* r/ z# t/ f% k* i: \7 z; C
C++ 用的是VS 社区版,估计编译器不给力,但也不至于差这么多啊。$ F. o6 {7 t$ O X, e; h+ u
& V+ o# C4 R9 D9 d5 I* @2 M$ h
高手们给分析分析, 多谢了。1 [4 _# P( R8 p* e1 A$ N% I
|
评分
-
查看全部评分
|