How to add noise in a SAR single point target simulation

19 Ansichten (letzte 30 Tage)
Jason
Jason am 23 Okt. 2025 um 10:06
Kommentiert: Jason am 24 Okt. 2025 um 13:25
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!

Antworten (1)

Umar
Umar am 23 Okt. 2025 um 20:59
Bearbeitet: Umar am 23 Okt. 2025 um 21:00

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

  1 Kommentar
Jason
Jason am 24 Okt. 2025 um 13:25
@Umar Thanks a lot for the clear explanation! That really helped me understand how to add speckle and AWGN properly. I will try it in my program.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Propagation and Channel Models finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by