OperatingFrequency = 37.5e3;
isopaths = phased.IsoSpeedUnderwaterPaths('ChannelDepth',channelDepth,...
'NumPathsSource','Property','NumPaths',10,'PropagationSpeed',propSpeed);
channel = phased.MultipathChannel('OperatingFrequency',OperatingFrequency);
pulseBandwidth = 1/pulseWidth;
wav = phased.RectangularWaveform('PRF',prf,'PulseWidth',pulseWidth,...
projector = phased.IsotropicProjector('VoltageResponse',120);
projRadiator = phased.Radiator('Sensor',projector,...
'PropagationSpeed',propSpeed,'OperatingFrequency',OperatingFrequency);
beaconPlat = phased.Platform('InitialPosition',[1000; 1000; -2],...
hydrophone = phased.IsotropicHydrophone('VoltageSensitivity',-150);
array = phased.ULA('Element',hydrophone,...
'NumElements',5,'ElementSpacing',propSpeed/OperatingFrequency/2,...
arrayCollector = phased.Collector('Sensor',array,...
'PropagationSpeed',propSpeed,'OperatingFrequency',OperatingFrequency);
arrayPlat = phased.Platform('InitialPosition',[0; 0; -100],...
rx = phased.ReceiverPreamp(...
'SeedSource','Property',...
rxsig = zeros(size(x,1),5,numTransmits);
[pos_tx,vel_tx] = beaconPlat(1/prf);
[pos_rx,vel_rx] = arrayPlat(1/prf);
[paths,dop,aloss,rcvang,srcang] = ...
isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf);
tsig = projRadiator(x,srcang);
rsig = channel(tsig,paths,dop,aloss);
rsig = arrayCollector(rsig,rcvang);
rxsig(:,:,i) = abs(rx(rsig));
ylabel('Signal Amplitude (V)')
musicspatialspect = phased.MUSICEstimator('SensorArray',array,...
'PropagationSpeed',propSpeed,'OperatingFrequency',...
OperatingFrequency,'ScanAngles',-90:0.1:90,'DOAOutputPort',true,...
'NumSignalsSource','Property','NumSignals',1);
angPassive = zeros(numTransmits,1);
angAct = zeros(numTransmits,1);
[pos_tx,vel_tx] = beaconPlat(1/prf);
[pos_rx,vel_rx] = arrayPlat(1/prf);
[paths,dop,aloss,rcvang,srcang] = ...
isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf);
tsig = projRadiator(x,srcang);
rsig = channel(tsig,paths,dop,aloss);
rsig = arrayCollector(rsig,rcvang);
[~,angPassive(i)] = musicspatialspect(rxsig);
plot([angPassive angAct])
ylabel('Arrival angle (degrees)')
legend('Estimated DOA','Actual DOA')
plotSpectrum(musicspatialspect)