├── Direction Of Arrival Estimation Algorithms.pdf ├── MVDR_MUSIC_ESPRIT_ROOTMUSIC_simulation.m ├── MVDR_MUSIC_ESPRIT_ROOT_MUSIC_simulation.mlx └── README.md /Direction Of Arrival Estimation Algorithms.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kobirahimi/DOA-Estimation-Algorithms/c544532ec5e8f576bb6bdabc65988fdb1cb8125b/Direction Of Arrival Estimation Algorithms.pdf -------------------------------------------------------------------------------- /MVDR_MUSIC_ESPRIT_ROOTMUSIC_simulation.m: -------------------------------------------------------------------------------- 1 | ula = phased.ULA('NumElements',10,'ElementSpacing',0.5); 2 | ang1 = [40; 0]; % First signal 3 | ang2 = [30; 0]; % Second signal 4 | angs = [ang1 ang2]; 5 | 6 | c = physconst('LightSpeed'); 7 | fc = 300e6; % Operating frequency 8 | lambda = c/fc; 9 | pos = getElementPosition(ula)/lambda; 10 | nPower = 0.01;% noise power, uncorrelated 11 | Nsamp = 1000;%number of snapshots 12 | spower = 1;%signal power in watts, uncorrelated signals 13 | rs = rng(2007); 14 | 15 | signal = sensorsig(pos,Nsamp,angs,nPower,spower); 16 | broadside_angle = az2broadside(angs(1,:),angs(2,:)) 17 | 18 | mvdrspatialspect = phased.MVDREstimator('SensorArray',ula,... 19 | 'OperatingFrequency',fc,'ScanAngles',-90:90,... 20 | 'DOAOutputPort',true,'NumSignals',2); 21 | [~,DOA_MVDR_estimation] = mvdrspatialspect(signal) 22 | 23 | musicspatialspect = phased.MUSICEstimator('SensorArray',ula,... 24 | 'OperatingFrequency',fc,'ScanAngles',-90:90,... 25 | 'DOAOutputPort',true,'NumSignalsSource','Property','NumSignals',2); 26 | [~,DOA_MUSIC_estimation] = musicspatialspect(signal) 27 | 28 | espritspatialspect = phased.ESPRITEstimator('SensorArray',ula,... 29 | 'OperatingFrequency',fc,'NumSignalsSource','Property',... 30 | 'NumSignals',2); 31 | 32 | yesprit = espritspatialspect(signal); 33 | DOA_ESPRIT_estimation = yesprit(1:2) 34 | 35 | rootmusicspatialspect = phased.RootMUSICEstimator('SensorArray',ula,... 36 | 'OperatingFrequency',fc,'NumSignalsSource','Property',... 37 | 'NumSignals',2); 38 | yrootmusic = rootmusicspatialspect(signal); 39 | DOA_ROOT_MUSIC_estimation = yrootmusic 40 | 41 | ymvdr = mvdrspatialspect(signal); 42 | ymusic = musicspatialspect(signal); 43 | ymvdr_dB = 20*log10(ymvdr) - max(20*log10(ymvdr)); 44 | ymusic_dB = 20*log10(ymusic) - max(20*log10(ymusic)); 45 | 46 | plot(mvdrspatialspect.ScanAngles,ymvdr_dB,musicspatialspect.ScanAngles,... 47 | ymusic_dB) 48 | title('DOA estimation with MVDR, MUSIC, ROOT-MUSIC, ESPRIT') 49 | xlabel(['\theta' char(176)]) 50 | ylabel('Power [dB]') 51 | grid on 52 | hold on 53 | xline(yesprit(1),'black'); 54 | xline(yesprit(2),'black'); 55 | 56 | yesprit1 = scatter(yesprit(1),0); 57 | yesprit1.Marker = 'square'; 58 | yesprit1.MarkerFaceColor = 'black'; 59 | yesprit1.MarkerEdgeColor = 'black'; 60 | 61 | yesprit2 = scatter(yesprit(2),0); 62 | yesprit2.Marker = 'square'; 63 | yesprit2.MarkerFaceColor = 'black'; 64 | yesprit2.MarkerEdgeColor = 'black'; 65 | 66 | xline(yrootmusic(1),'blue'); 67 | xline(yrootmusic(2),'blue'); 68 | 69 | yrootmusic1 = scatter(yrootmusic(1),0); 70 | yrootmusic1.Marker = '*'; 71 | yrootmusic1.MarkerFaceColor = 'blue'; 72 | yrootmusic1.MarkerEdgeColor = 'blue'; 73 | 74 | yrootmusic2 = scatter(yrootmusic(2),0); 75 | yrootmusic2.Marker = '*'; 76 | yrootmusic2.MarkerFaceColor = 'blue'; 77 | yrootmusic2.MarkerEdgeColor = 'blue'; 78 | 79 | legend('MVDR','MUSIC','ESPRIT','ROOT MUSIC'); -------------------------------------------------------------------------------- /MVDR_MUSIC_ESPRIT_ROOT_MUSIC_simulation.mlx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kobirahimi/DOA-Estimation-Algorithms/c544532ec5e8f576bb6bdabc65988fdb1cb8125b/MVDR_MUSIC_ESPRIT_ROOT_MUSIC_simulation.mlx -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DOA-Estimation-Algorithms 2 | Mathematical implementation, simulations and performances of different direction of arrival algorithms such as MUSIC, ROOT MUSIC, ESPRIT and MVDR. 3 | ### MUSIC, ROOT MUSIC, ESPRIT, MVDR results for two signals comming from 30 & 40 degrees: 4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |