function SpectralMajorisationDemo(); SpectralMajorisationDemo() This demo demonstrated spectral majorisation achieved by a number of iterative PEVD algorithms after 50 and 200 iterations for a situation with known ground truth. The ground truth is provided by a source model generated by the function GenerateMIMOSources(), which here contains 8 sources with spectrally majorised PSDs and a paraunitary convolutive mixing matrix of order 16. The results reflect approximately those shown in Figures 4 and 5 of [1]. Reference: [1]
0001 %function SpectralMajorisationDemo(); 0002 %SpectralMajorisationDemo() 0003 % 0004 % This demo demonstrated spectral majorisation achieved by a number of 0005 % iterative PEVD algorithms after 50 and 200 iterations for a situation 0006 % with known ground truth. 0007 % The ground truth is provided by a source model generated by the 0008 % function GenerateMIMOSources(), which here contains 8 sources with 0009 % spectrally majorised PSDs and a paraunitary convolutive mixing matrix 0010 % of order 16. 0011 % 0012 % The results reflect approximately those shown in Figures 4 and 5 of [1]. 0013 % 0014 % Reference: 0015 % 0016 % [1] 0017 0018 % S. Weiss, University of Strathclyde, 2/11/2014 0019 0020 M = 8; 0021 N = 100000; 0022 0023 %----------------------------------------------------- 0024 % Simulated sources 0025 %----------------------------------------------------- 0026 % set seeds 0027 randn('seed',10); rand('seed',10); 0028 % define source parameters 0029 Angles = [0; 20; 40]/180*pi; % angles of arrival 0030 Freqs = [0 0.4 0.5 0.7 0.8 1; % bandpass definitions 0031 0 0.35 0.45 0.7 0.8 1; 0032 0 0.4 0.5 0.8 0.9 1]; 0033 % derive array data 0034 X = zeros(M,N); 0035 for i = 1:1, 0036 S = BBSteeringVector(8,Angles(i),25); 0037 f = firpm(24,Freqs(i,:),[0 0 1 1 0 0]); 0038 s = filter(f,1,randn(1,N)); 0039 X = X + MIMOFilter(S,s); 0040 end; 0041 % space-time covariance matrix 0042 R = SpaceTimeCovMat(X,55); 0043 0044 %----------------------------------------------------- 0045 % Polynomial EVD 0046 %----------------------------------------------------- 0047 [H,Gamma] = SMD(R,100,0.0001,0.0001); 0048 0049 %----------------------------------------------------- 0050 % Polynomial MUSIC 0051 %----------------------------------------------------- 0052 angles = [(-90:5:-40), (-39:-21), (-20:5:10), (11:49), (50:5:90)]; 0053 Nfft= 512; 0054 [Pss,Ps] = PssMusic(PUPolyMatTrim(H,0.00001),1,Nfft,angles,0.001); 0055 contourf(angles,(1:Nfft),20*log10(Pss))