TA的每日心情 | 怒 2025-9-22 22:19 |
|---|
签到天数: 1183 天 [LV.10]大乘
|
5#

楼主 |
发表于 2022-9-24 23:54:10
|
只看该作者
本帖最后由 雷达 于 2022-9-24 23:57 编辑 + X, K; P! X2 D1 l4 b) h1 s |2 a( F
+ d9 A) _& i. L, [5 D% U1 `, {
. [2 l/ _* Y* a7 R+ O" R7 Cvoid xcorr(comp* outcomp, comp* A, int lenA, comp* B, int lenB)* G6 c: p: Y" m. f/ l+ U
{: o4 w/ K$ Y; V4 T7 x
comp temp, xtimesy;
4 Z) ? w. H; V! L# Z xtimesy.re = 0;/ i* a3 p2 _5 v7 v. F) n
xtimesy.im = 0;* Q. d" W8 W3 S' [7 R, [6 C
int j0 = lenB - 1;% @! I7 U1 ^1 q T0 c8 ?7 Z
int i, j, i1, reali;: \6 c) Q" D3 E! Y2 c/ J
if (lenA % 2 == 1)
. Q+ U8 c! R: | reali = lenA + 1;; F" S% S" d0 R) s2 B
else2 p+ V9 r- q9 C' q
reali = lenA;
' ~# E9 ]% p% @( h6 l% K2 { reali /= 2;
# T& I; R) n8 ~5 e9 @, _/ ~+ v0 g0 Y9 a! G
int nconv = reali + lenB;! Q% `- a1 B; W/ o
//#pragma omp parallel for
( C; B, q. A* D for (i = reali; i < nconv; i++)
8 D p. d' G) n1 I8 B( Z/ [ {# y7 s" o! e4 _. J+ T
temp.re = 0;' o! o/ [. x( N
temp.im = 0;
+ `& G$ P i1 n1 K, x: @, m* Q i1 = i;7 G5 A3 Y) W& l% ~) _/ X
for (j = j0; j >= 0; j--): }' f X$ N1 y4 @ j
{
2 j1 x& Z7 r% K /* floating date operation */* |" b8 Y" W0 I+ w% v! x0 ~
} i* L" D$ n/ s2 B( ]; {8 ^0 z
}
5 |+ b& }9 e+ Q. V% N4 _1 ]}5 ]' r$ _, [0 A+ s5 V( e
! Y! |# [ s/ n+ J0 o+ lxcorr函数代码如上,comp是复数struct, 做过长度为11、19两个矢量的测试,和octave结果完全一样
2 b% ?1 `8 D1 p- ~6 O
0 O1 s! n. v6 V7 |红色部分是内循环,现在其内部操作都comment out 了, j0大概是 6000。. W3 J8 U; A4 s r8 A, P- q8 @
现在call xcorr 100次,耗时78s.
8 B% [0 g3 J |, s" z
) l3 C; ?& c3 h% M; C) I' e如果把红色部分内循环本身完全comment out, call xcorr 1000次,耗时 <1s.
, E( j9 M6 o; _7 O B$ |4 b% C3 d" u
|
|