|
我在simulink中建了一個簡單的二階的SDM
7 e& G: R3 c6 _! W* T% d9 w1 b) ~' K& b" U: f5 h+ x W( ?9 J5 n' Y
http://www.wretch.cc/album/show.php?i=bleezebub&b=14&f=1513912854&p=0
. S# i9 y. Q# d# ]. @4 F
5 ^1 o q( j) b- b: ]; N5 a輸入頻率是500Hz OSR為32
" v, |5 Z9 r9 X4 y+ S" C: g8 l; l" r$ N
想請問板上的前輩
7 G8 R5 T1 o3 r$ S8 {' Q \" Z$ p) l* E
%calculate SNR from simulink output
, Q3 C- ]" p, k3 _clear;& M6 s, @7 ~' M- Y: K" Z3 x, F
load simout.mat -ascii;+ c3 Z6 ]6 p$ M/ H7 u5 O& e
9 K6 M7 @4 g& |4 }- D* hosr=32;
3 d: ?) O' z7 `% n+ j1 R7 K
! K4 ~* j" W! M( I5 s2 ]5 Ga=0;! Y( ?* z m0 q4 J8 ?' I
for a=1:64001
( |! R; x A0 \7 e! F2 T; R! J x(1,a)=simout(a,1);/ d+ f, c6 `' S: Z# I) i: Z5 O
end
9 _1 I8 ^, O' l9 L6 Y. k0 A5 Y" Z$ r+ O+ Q
( T3 B1 U: s/ P4 A2 I) {
N=length(x)-1;
" z! y6 `$ H$ ~5 n$ t, Z" h2 py=ds_hann(N);( |8 g1 i f# y$ F
s=x(2:N+1).*y;
5 H3 h8 K0 R) o9 M% h3 ?sigfft=fft(s)./(N/4);
0 C( t& R$ P/ }: ^snr_simulink=calculateSNR(sigfft(1:ceil(N/(2*osr))),500,1)
# ?# j2 w/ K' L- y" m$ {
& K9 J N) o8 V2 w2 F以上這段計算SNR的code有錯嗎# r. x6 K1 v# r
1 \ ?% e+ D' M: O/ z5 Y" o6 s因為在我改變輸入頻率或OSR的時候) q P& w% D2 \: G/ P# @# b; T
9 F, O$ C4 e# W% R
有時候會出現
2 z; n) u- {3 K3 X ^8 q+ \0 \
% `: G" ~% o1 u$ O2 vsnr_simulink = -Inf
, N2 @( S% l! _0 {# W
6 U" {; E1 N! R0 {' P1 A6 F請問這是甚麼情況呢3 ~6 {& ~ t& g4 ?4 S, v
2 P% P( m$ c, M$ g _* f5 U
想請高手指點 |
|