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

楼主 |
发表于 2022-9-24 23:54:10
|
只看该作者
本帖最后由 雷达 于 2022-9-24 23:57 编辑 ?4 p: |6 O" {' a% l) c
3 w, M: y- z4 q0 y9 s
1 s2 S' S) R6 tvoid xcorr(comp* outcomp, comp* A, int lenA, comp* B, int lenB)0 g% R6 q3 e6 S) E7 s
{* n) W, B8 p0 {4 F1 \) t
comp temp, xtimesy;6 t1 E+ _1 }& N
xtimesy.re = 0;$ \) n/ @* X/ f
xtimesy.im = 0;
; H* s% s7 T' h, h. | int j0 = lenB - 1;
/ A0 F/ Z( h! d8 P2 E# T int i, j, i1, reali;# N* q4 S8 B, _& g/ \4 w
if (lenA % 2 == 1)" t# U# j7 ~2 x) ?3 ^! T1 f
reali = lenA + 1;7 t2 ^. D8 e; {- U
else
# q9 [. v" F# C1 k2 {& N0 { reali = lenA;4 S [. s- E7 i9 a! V2 ` p1 N! M
reali /= 2; y# Q& x2 K! L8 G4 [
7 t7 N4 x$ M) {1 z `$ u! d int nconv = reali + lenB;
( h9 j! j3 d- X //#pragma omp parallel for
! _ r8 G5 t x# F for (i = reali; i < nconv; i++)9 t& g6 l/ a& [: T; F5 f
{
( w+ y! ^" n; l, p/ H0 j, E/ a! ]9 t temp.re = 0;
8 H" t" z& i' j3 m) G) I" K4 R6 x temp.im = 0;
7 G# A5 C$ o; Q* h* B$ ? i1 = i;4 t) n" k" z7 C$ p7 F
for (j = j0; j >= 0; j--)5 }, K( g% q, _% W1 A1 p
{
{9 I, {" z6 P, Y0 R! R /* floating date operation */
# \$ @& ?5 ? z# d0 O$ h7 h }( q$ r& [5 O; y. v; j2 _
}* c$ `. r, U9 N- w0 `. U% d5 c9 {
}% R( w$ Q! D2 A- a( I* J$ |9 k* N0 }2 M
7 @1 I3 j$ H3 J6 {
xcorr函数代码如上,comp是复数struct, 做过长度为11、19两个矢量的测试,和octave结果完全一样
$ W+ Z; S# R4 r2 D5 j
# D, T9 B, j# u3 D红色部分是内循环,现在其内部操作都comment out 了, j0大概是 6000。
( U& x+ Z, Q8 X- M) d' ?* v. J, s现在call xcorr 100次,耗时78s.
B$ T7 c# n6 X' [; H8 Z# @5 @% W+ B0 q$ a: Y2 w# m! l' ^
如果把红色部分内循环本身完全comment out, call xcorr 1000次,耗时 <1s. " o; k0 W9 i& N& J" L
4 e( s# K" U b. [% S |
|