Producing Clutter IQ for arbitrary Waveform

34 views (last 30 days)
Thomas
Thomas on 16 Jan 2026 at 11:22
Commented: Thomas about 9 hours ago
I was looking at https://www.mathworks.com/help/radar/ug/simulating-radar-returns-from-moving-sea-surfaces.html and saw that the radarTransciever() object has a phased.LinearFMWaveform() object attributed to it. Upon looking at this i realize there are only a few types of waveforms available, and it seems NO custom IQ waveform that can be created into a object like phased.LinearFMWaveform() that i can use to define in the radarTransceiver() object and therefore execute the receive(scene).
Ultimately i need to generate IQ off sea surface, with an arbitrary waveform i have predefined/computed.
Is there a way to define a custom waveform that is compatible with what i am trying to do above? or is there another way to generate IQ clutter return with an arbitrary waveform?

Answers (1)

Broy
Broy on 20 Jan 2026 at 6:27
I understand you are trying to generate IQ returns from a moving sea surface using a specific, pre-computed arbitrary waveform. You are facing an issue where the radarTransceiver object appears to strictly require standard waveform objects and does not offer a direct way to input a custom IQ waveform object.
There is a workaround if your custom waveform can be defined by frequency modulation and a custom amplitude envelope. You can use the phased.CustomFMWaveform object which is compatible with radarTransceiver.
Useful Documentation regarding phased.CustomFMWaveform object:
Hope this helps.
  2 Comments
Peter Khomchuk
Peter Khomchuk on 20 Jan 2026 at 15:53
Hello @Thomas,
I would like to mention one more option in addition to what was suggested by @Broy.
Another way to specify a custom waveform is by using the phased.PhaseCodedWaveform System object
(see: https://www.mathworks.com/help/phased/ref/phased.phasecodedwaveform-system-object.html)
with the Code property set to "Custom".
In this configuration, the custom code can be any vector of complex-valued samples. It does not need to be a phase‑coded waveform in the strict sense. Therefore, if you already have an arbitrary waveform represented as a vector of IQ samples, it can be transmitted by treating it as a custom phase‑coded waveform using the phased.PhaseCodedWaveform object.
Thomas
Thomas 2 minutes ago
@Peter Khomchuk, that is a very clever suggestion and exactly the type of thing i was looking for. So it seems that my 'phase code' length could essentially be length of Fs*PulseWidth, and if i define the IQ for that length as being exactly my IQ under that particular pulsewidth.
I haven't tried it, but it sounds promissing at least from the standpoint of defining the relevant object type with data i need. Id be curious what assumptions are made in other processes that use this definition of waveform? for example would generating the match filter work the same? would my above problem work the same?
At some point soon ill try an example and work through it myself. Thanks!

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!