X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Ftsa-4.2.4%2Fbispec.m;fp=octave_packages%2Ftsa-4.2.4%2Fbispec.m;h=d50804cad2cff63866c3eeccb33c92087396672c;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/tsa-4.2.4/bispec.m b/octave_packages/tsa-4.2.4/bispec.m new file mode 100644 index 0000000..d50804c --- /dev/null +++ b/octave_packages/tsa-4.2.4/bispec.m @@ -0,0 +1,54 @@ +function [BISPEC,BIACF,ACF] = bispec(Z,N); +% Calculates Bispectrum +% [BISPEC] = bispec(Z,N); +% +% Input: Z Signal +% N # of coefficients +% Output: BiACF bi-autocorrelation function = 3rd order cumulant +% BISPEC Bi-spectrum +% +% Reference(s): +% C.L. Nikias and A.P. Petropulu "Higher-Order Spectra Analysis" Prentice Hall, 1993. +% M.B. Priestley, "Non-linear and Non-stationary Time series Analysis", Academic Press, London, 1988. + +% $Id: bispec.m 5090 2008-06-05 08:12:04Z schloegl $ +% Copyright (C) 1997-2003,2008 by Alois Schloegl +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . + + +P=N+1; +ACF=zeros(1,N+1); +BIACF=zeros(2*N+1,2*N+1); + +Z=Z(:); +M=size(Z,1); +M1=sum(Z)/M; +Z=Z-M1*ones(size(Z)); + +for K=0:N, + jc2=Z(1:M-K).*Z(1+K:M); + ACF(K+1)=sum(jc2)/M; + for L = K:N, + jc3 = sum(jc2(1:M-L).*Z(1+L:M))/M; + BIACF(K+P, L+P) =jc3; + BIACF(L+P, K+P) =jc3; + BIACF(L-K+P, -K+P)=jc3; + BIACF(-K+P, L-K+P)=jc3; + BIACF(K-L+P, -L+P)=jc3; + BIACF(-L+P, K-L+P)=jc3; + end; +end; + +BISPEC=fft2(BIACF,128,128);