TA的每日心情 | 开心 2022-1-21 15:08 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
你的矩阵每层都对称,利用对称性,哪怕全写循环嵌套,也可以省大约一半的计算量。2 z( g& {" @+ M
for t = 1 : S
0 q$ i' V% z/ S$ v! u for m = 1 : K
* h# y. z/ A1 [3 z8 T for n = m : K0 P- }( S: E* D+ U2 a% ?: F: o# [) J3 U
E2( m, n, t ) = ( sum( G( 1 : K, m, t ) ) + sum( G( 1 : K, n, t ) ) ) * K;
! C0 P: B, O$ U" s E2( n, m, t ) = E2( m, n, t ); % 对称性
( q* T% }5 q1 v4 D" m! V' T/ V1 l end
7 e" A) V% o& L; d2 X& O. u: k end
/ h6 g0 n3 s. i/ M6 ]( L7 Mend
0 \7 b* ?4 g& I2 P$ K当然更简单的方法是根据规律直接计算每层: l# m5 ?' v5 m# k/ D. f
for t = 1 : S/ Y# {! z0 K: p8 `0 W I
M = sum( G( :, :, t ) ).' * K * ones( 1, K );
# i1 S) ]$ R7 L. t6 z+ y# | E3( :, :, t ) = M.' + M;' U2 e: |8 r. ^- ~+ ~
end/ Y! u8 t- o; n! y1 y1 r. A
在K = 50; S = 20; 时& j) M. X1 F/ x
原始计算方法历时 1.852707 秒。
0 y; ?- e8 |' M, r4 q& C1 T$ C) C& m利用对称性计算,历时 0.274421 秒。+ E; | a5 A# h$ N2 s+ n7 A
利用规律逐层就散,历时 0.005905 秒。 |
|