generate data from arbitrary probability random function

2 visualizaciones (últimos 30 días)
hamidreza hamidi
hamidreza hamidi el 17 de Dic. de 2018
Comentada: Torsten el 2 de En. de 2019
HI,
I Have a arbitrary probility function and I want to generate data according to this function
my function is:
f=7.6*exp(-2.1*x)+1.6*exp(-1.8*x)*cos(2.2*x+1.3)+9.4*exp(-2.04*x)*cos(x-2.6)
how can I generate data from this probability density function?
if I generate this data I would like to plot histogram of the generated data.
  4 comentarios
Torsten
Torsten el 17 de Dic. de 2018
Most probably, the coefficients in f are rounded.
hamidreza hamidi
hamidreza hamidi el 22 de Dic. de 2018
I estimated this function and x is between 0 and 20

Iniciar sesión para comentar.

Respuestas (1)

Torsten
Torsten el 17 de Dic. de 2018
Editada: Torsten el 17 de Dic. de 2018
n = 1000;
ur = zeros(n,1);
u = rand(n,1);
f = @(x)7.6*exp(-2.1*x)+1.6*exp(-1.8*x).*cos(2.2*x+1.3)+9.4*exp(-2.04*x).*cos(x-2.6);
for i = 1:numel(u)
fun = @(x)integral(f,0,x)-u(i);
ur(i) = fzero(fun,0.5);
end
histogram(ur)
  2 comentarios
hamidreza hamidi
hamidreza hamidi el 22 de Dic. de 2018
can I have an interval? for example data with x between 0 and 10?
Torsten
Torsten el 2 de En. de 2019
Adapt your probability function such that the integral from 0 to 10 equals 1 (e.g by dividing f(x) by integral_{0}^{10} f(x) dx).
Then the above method will produce random numbers between 0 and 10.
Best wishes
Torsten.

Iniciar sesión para comentar.

Categorías

Más información sobre Random Number Generation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by