How to add noise in a SAR single point target simulation

11 views (last 30 days)
Jason
Jason on 23 Oct 2025 at 10:06
Edited: Umar about 14 hours ago
Hi everyone,
I’m working on a Synthetic Aperture Radar (SAR) point target simulation in MATLAB. Suppose my raw echo data is stored in the variable s_raw, and after the range Doppler algorithm (RDA) processing, the final result is stored in s_final.
I would like to add noise to my simulation, but I’m not sure how to properly do this. I know that SAR images are usually affected by speckle noise, but I’m not sure whether this type of noise should be added directly to the raw data like
s_raw = awgn(s_raw,SNR);
or in other stage with other method.
Could someone please explain the correct way to add noise in a SAR point target simulation?
Thanks in advance!

Answers (1)

Umar
Umar 10 minutes ago
Edited: Umar 9 minutes ago

Hi @Jason,

For SAR simulations, speckle noise is typically the main issue since it's multiplicative, meaning it scales with your signal rather than being added on top of it. So, you’d want to apply it before any RDA processing. A simple way to simulate it in MATLAB is by multiplying your raw data (`s_raw`) by some random noise factor.

Here’s how you can do it:

speckle_std_dev = 0.2;  % Controls the noise strength
speckle_noise = 1 + speckle_std_dev * randn(size(s_raw));  % Random noise
s_raw_with_speckle = s_raw .* speckle_noise;  % Apply the speckle noise

You can tweak `speckle_std_dev` to adjust how much noise you want. It’s basically controlling the noise level.

Now, when you’re done with your RDA and you have the final processed data (`s_final`), you’ll probably want to add AWGN (Additive White Gaussian Noise), which is additive and affects the signal after processing. This would be the type of noise you’d usually apply to your final image to simulate sensor or environmental noise. MATLAB's `awgn` function is perfect for this:

s_final_with_awgn = awgn(s_final, SNR_dB);  % Add AWGN after RDA

Just set `SNR_dB` to the level of noise you want to introduce. If you know the actual signal power, you can also specify that:

s_final_with_awgn = awgn(s_final, SNR_dB, signalpower);

To combine both types of noise, you would first add speckle noise to the raw data before processing:

speckle_noise = 1 + speckle_std_dev * randn(size(s_raw));  
s_raw_with_speckle = s_raw .* speckle_noise;

And then, after processing through RDA, apply AWGN to the final result:

s_final_with_awgn = awgn(s_final, SNR_dB);

This way, you’ve got both the multiplicative speckle noise affecting your raw data and the additive AWGN impacting the final processed data.

Also, if you want your noise to be repeatable across different simulation runs, set the random seed using `rng(seed)` before you call `awgn`. That way, you’ll get the same noise pattern every time.

Hope that clears it up! Let me know if you run into any issues or have more questions.

Reference:

awgn https://www.mathworks.com/help/comm/ref/awgn.html

Categories

Find more on Propagation and Channel Models in Help Center and File Exchange

Tags

Products


Release

R2024b

Community Treasure Hunt

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

Start Hunting!