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

楼主 |
发表于 2022-9-24 23:54:10
|
只看该作者
本帖最后由 雷达 于 2022-9-24 23:57 编辑
, ~: I6 p" Q2 ]$ q' Z4 `! V0 c. w- N- g- i9 C/ k% E2 O, B
" l) P4 W" ^" t2 ]* A* H
void xcorr(comp* outcomp, comp* A, int lenA, comp* B, int lenB)
3 E4 t: R1 E) j4 K) p3 i{
7 Q" M; F) v* Z2 T! X7 ^, r _3 m comp temp, xtimesy;. }8 a$ a. X0 a3 H3 c
xtimesy.re = 0;
, Q* _% U L. m xtimesy.im = 0;
% P* U6 n% D4 V+ M. _3 {5 n. [ int j0 = lenB - 1;) `. @3 l: b+ \: e) C$ R E
int i, j, i1, reali;
9 [$ w/ d( l j, @, ? if (lenA % 2 == 1)
+ C# z- C5 {: u# Q# S6 t1 t% t reali = lenA + 1;
6 b) w4 P7 n4 |' I+ r! Y- j else: G% [4 C6 ]) i9 g6 J m" A0 L
reali = lenA;1 w- P7 Z: Y7 q2 \, ]3 B
reali /= 2;" W. `+ y- ~8 `' `, l- b
! A+ v Y1 O3 Y& X7 @& ]& F y; f. E int nconv = reali + lenB;
' Q8 k, A( N, H. |6 t //#pragma omp parallel for9 ]* F% m: c5 U$ |
for (i = reali; i < nconv; i++)0 d$ U) k; |' P& y. k
{
; E9 ^, j. `; [ m. E5 O9 h& w& i temp.re = 0;
- x8 K- b# u, M" X6 L# x temp.im = 0;! k& b$ @3 N# g/ G) f, G3 s
i1 = i;
% T S1 G, S+ E3 s, R; N8 R1 K9 `7 ? for (j = j0; j >= 0; j--)# o: ?+ J" k- l- ]7 N
{
9 q, h5 I$ v9 E$ g: N) ^ /* floating date operation */+ Q y5 s' G3 \
}
2 w: V, _7 y& ?5 H# }. v }
, N* o5 l: R+ }, a, g9 j! ]}/ Y1 M3 d6 B+ T% ~
$ y' o# W/ Q$ B* Yxcorr函数代码如上,comp是复数struct, 做过长度为11、19两个矢量的测试,和octave结果完全一样3 U. G0 T; \$ L8 p) E
2 y$ f6 [$ G* y! f5 Z, M8 k% V
红色部分是内循环,现在其内部操作都comment out 了, j0大概是 6000。. t( g% Q! o& I1 r& [6 z
现在call xcorr 100次,耗时78s.
* R8 M" p5 X& Y1 g
: t( y& D0 ]* P5 U0 d* f如果把红色部分内循环本身完全comment out, call xcorr 1000次,耗时 <1s.
6 f R* Y( t1 k3 Y; j0 |8 w5 z' B1 e) b2 M, t+ b
|
|