changeset 284:a2da923e14f8 octave-forge

Mode=7 included
author schloegl
date Fri, 12 Apr 2002 14:33:31 +0000
parents abca80449a5b
children 46dbff753d98
files extra/tsa/mvar.m
diffstat 1 files changed, 33 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/extra/tsa/mvar.m	Fri Apr 12 14:32:53 2002 +0000
+++ b/extra/tsa/mvar.m	Fri Apr 12 14:33:31 2002 +0000
@@ -136,9 +136,9 @@
                 ARF(:,K*M+(1-M:0)) = D / PEB;	
                 ARB(:,K*M+(1-M:0)) = D'/ PEF;	
                 for L = 1:K-1,
-                        tmp      = ARF(:,L*M+(1-M:0))   - ARF(:,K*M+(1-M:0))*ARB(:,(K-L)*M+(1-M:0));
+                        tmp                    = ARF(:,L*M+(1-M:0)) - ARF(:,K*M+(1-M:0))*ARB(:,(K-L)*M+(1-M:0));
                         ARB(:,(K-L)*M+(1-M:0)) = ARB(:,(K-L)*M+(1-M:0)) - ARB(:,K*M+(1-M:0))*ARF(:,L*M+(1-M:0));
-                        ARF(:,L*M+(1-M:0))   = tmp;
+                        ARF(:,L*M+(1-M:0))     = tmp;
                         %tmp      = ARF{L}   - ARF{K}*ARB{K-L};
                         %ARB{K-L} = ARB{K-L} - ARB{K}*ARF{L};
                         %ARF{L}   = tmp;
@@ -284,6 +284,37 @@
                 PE(:,K*M+(1:M)) = PEF;        
         end;
         
+elseif Mode==7 %%%%% multi-channel Levinsion algorithm [2] using Vieira-Morf Method
+        fprintf('Warning MDURLEV: It''s not recommended to use this mode\n')        
+        C(:,1:M) = C(:,1:M)/N;
+        F = Y;
+        B = Y;
+        PEF = C(:,1:M);
+        PEB = C(:,1:M);
+        for K=1:Pmax,
+                D      = covm(F(K+1:N,:),B(1:N-K,:),'M');
+                ARF(:,K*M+(1-M:0)) = (PEF.^-.5)*D*(PEB.^-.5);	
+                ARB(:,K*M+(1-M:0)) = (PEF.^-.5)*D'*(PEB.^-.5);	
+                
+                tmp        = F(K+1:N,:) - B(1:N-K,:)*ARF(:,K*M+(1-M:0)).';
+                B(1:N-K,:) = B(1:N-K,:) - F(K+1:N,:)*ARB(:,K*M+(1-M:0)).';
+                F(K+1:N,:) = tmp;
+                
+                for L = 1:K-1,
+                        tmp      = ARF(:,L*M+(1-M:0))   - ARF(:,K*M+(1-M:0))*ARB(:,(K-L)*M+(1-M:0));
+                        ARB(:,(K-L)*M+(1-M:0)) = ARB(:,(K-L)*M+(1-M:0)) - ARB(:,K*M+(1-M:0))*ARF(:,L*M+(1-M:0));
+                        ARF(:,L*M+(1-M:0))   = tmp;
+                end;
+                
+                %RCF{K} = ARF{K};
+                RCF = ARF(:,K*M+(1-M:0));
+                
+                PEF = covm(F(K+1:N,:),F(K+1:N,:),'M');
+                PEB = covm(B(1:N-K,:),B(1:N-K,:),'M');
+                %PE{K+1} = PEF;        
+                PE(:,K*M+(1:M)) = PEF;        
+        end;
+        
 elseif Mode==4,  %%%%% nach Kay, not fixed yet. 
         fprintf('Warning MDURLEV: It''s not recommended to use this mode\n')