how to generate a Gaussian white noise with a mean of zero inside ODE function

62 views (last 30 days)
SALEH ALHUMAID
SALEH ALHUMAID on 2 May 2020
Answered: Sai Sri Pathuri on 18 May 2020
Hi,
I am new to the matlab, I am trying to generate a Gaussian white noise with a mean of zero ranging from -0.03 to 0.03 like the attached photo, inside an ODE function.
I was using
White_noise= wgn(1,1,0);
but i don't think it is correct! should i used randn istead?
my code
function dydt = surfeq(t,y)
no=0.1;
n00=0.011;
v=80*1000/3600;
gq=1024;
white_noise= wgn(1,1,0);
%noise = rand(1);
x = 2*pi*no*sqrt(gq*v)*white_noise;
dydt = -2*pi*n00*v*y(1)+x;

Answers (2)

Sai Sri Pathuri
Sai Sri Pathuri on 5 May 2020
You are using correct function to generate white gaussian noise samples. However, you may not create white gaussian noise within a given range. As a workaround, you may follow below procedure.
% Create a vector of wgn samples
white_noise = wgn(1000,1,0);
j = 1;
% Get the samples within required range
for i = 1:1000
if white_noise(i) >= -0.03 && white_noise(i) <= 0.03
white_noise_inRange(j) = white_noise(i);
j = j+1;
end
end
  1 Comment
SALEH ALHUMAID
SALEH ALHUMAID on 16 May 2020
thanks for your help, but when I plot the (white_noise_inRang) i get few results, only 29 datas?

Sign in to comment.


Sai Sri Pathuri
Sai Sri Pathuri on 18 May 2020
Try to use more samples (n) of white_noise such that you get desired number of samples within range -0.03 to 0.03
white_noise = wgn(n,1,0);

Community Treasure Hunt

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

Start Hunting!