MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Arsalan
on 5 Jan 2013

Hi,

My questions is to do with addition of noise to a predefined signal.

Assume I have predefined a time_varying signal in array A. Now I like to add noise to this signal, I know that my noise follows a poisson process or is poisson in nature, I also know that my noise has a rms value of X.

I just like to know how I can generate and noise this type of noise.

Thanks, Arsalan.

*No products are associated with this question.*

Answer by Image Analyst
on 5 Jan 2013

Accepted answer

What are the values of your signal? Do you know that with values of more than about 10, Poisson noise is well approximated by Gaussian noise? See Wikipedia. So you might be able to use Gaussian noise. If you think that it has the shape of Poisson noise, but the values are a lot more than 10, then you could use log-normal noise.

Show 4 older comments

Arsalan
on 6 Jan 2013

You can think of the time varying signal as the electron stream generated from the photodiode in response to a time_varying optical signal, lets just assume that optical time_varying signal is sine wave modulated on an optical carrier which is at a very high frequency.

The simplified conversion between light to a photo current can be presented as

It=(eta*q*II)/(h*f);

where eta, q, h, f are only constants relating to the photodiode and the incoming light stream. II is an array containing the time varying optical signal, and It is the resulting photocurrent.

I can find my RMS shot noise via

SHOT=sqrt(2*q*eta*Signal_Bandwidth.*ItDc)

where ItDC is the mean value of the generated photocurrent.

but now I need to generate an array based on "SHOT" which will represent my shot noise which subsequently will be added to my photocurrent "It". to give my photocurrent+shot noise

Image Analyst
on 6 Jan 2013

Well what about the poissrnd function that you said you were going to try (I don't have that)? And you may have a current that is some number of microamps, but an incoming photon gives just a pulse, doesn't it? It doesn't give a continuous stream of current. So you have to model that as a stochastic process. Sure it's a burst of current but it occurs in bursts and each burst is a stochastic event, so you can use rand() or poissrnd (I guess) for determining when the next pulse comes along. That would be a Poisson stochastic process. Now it's been almost 30 years since I took classes in detectors, reasons for their noise, and stochastic optical processes (from Eustace Dereniak, I'm sure you've heard of him), but I thought shot noise was *an inherent characteristic of a sparse stream of photons*, *not* something that you could *add onto it*. But you'd best ask your Professor.

Answer by Matt J
on 5 Jan 2013

If you have the Statistics Toolbox, use POISSRND

Answer by Avi Silbiger
on 3 Dec 2014

I'm sure you already resolved the issue, but here is a short piece of code that simulates shot noise, for those who might need it in the future.

## 0 Comments