Sonar range and speed/doppler output using phased.Ran​geDopplerR​esponse with match filtering

22 views (last 30 days)
%I setup the rangedopresp using the setup for s ingle acoustic projector
%and hydrophone.
% I succesffully created the IQ cube and can plot the slow and fast times.
fs = 60e3;
propSpeed = 1500;
fc = 30000;
prf = 0.25;
ndop = 2048;
rangedopresp = phased.RangeDopplerResponse( ...
'SampleRate', fs, ...
'PropagationSpeed',propSpeed, ...
'DopplerFFTLengthSource','Property', ...
'DopplerFFTLength',ndop, ...
'DopplerOutput','Speed', ...
'MaximumNumInputSamplesSource', 'Property', ...
'MaximumNumInputSamples', 240000, ...
'OperatingFrequency', fc, ...
'PRFSource', 'Property',...
'PRF', prf);
% Converting in the final step for range and speed using
[rngdopresp,rnggrid,dopgrid] = rangedopresp(cube,coeff);
Unrecognized function or variable 'cube'.
% the resulting Range - Doppler map show the correct range but the
% speed range is very small -3e-3 to 3e-3 m/s
% If I set the speed to zero the result is as expected.
% for anyother speed greater than +- 3e-3 it is outside the range.
% I have not been able to identify how to get the correct speed range
%
% help will be appreciated

Answers (2)

Anmol
Anmol on 4 Nov 2025 at 10:40
Hi Joe,
I understand that you are trying to use "phased.RangeDopplerResponse" in MATLAB's Phased Array System Toolbox to process acoustic data from a single projector and hydrophone setup, aiming to generate a Range-Doppler map that accurately measures both the distance (range) and speed (Doppler) of a target but you are getting an error and also the speed range is small.
  1. You can check the variable “cube” is defined and loaded into the active workspace. You can refer: https://www.mathworks.com/company/technical-articles/building-and-processing-a-radar-data-cube.html
  2. As a workaround, you can try increasing the PRF value as there is a trade-off between maximum range and maximum speed observed.You can refer to this documentation for more details : https://www.mathworks.com/help/releases/R2025a/radar/ug/designing-radar-waveforms-for-high-PRF-systems.html
I hope, it helps.

Honglei Chen
Honglei Chen on 12 Nov 2025 at 19:49
Hi Joe,
phased.RangeDopplerResponse uses muliple pulses to estimate the speed, so the maximum unambiguous speed it can measure is determined by the half of the PRF (half because we need to consider both departing and approaching targets). In your configuration, we can compute the maximum unambiguous speed as
propSpeed = 1500;
fc = 30000;
prf = 0.25;
vmax = dop2speed(prf/2,propSpeed/fc)/2 % divides 2 at the end assuming it is a monostatic system
vmax = 0.0031
That value comes out to be about 3e-3. So the displayed interval is expected. To get larger unambiguous speed, you may need to increase the PRF of your system.
Hope this helps. If you need any additional information, please feel free to drop me a note. Thanks.

Products


Release

R2025a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!