generate data from arbitrary probability random function

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
Torsten
Torsten il 17 Dic 2018
Most probably, the coefficients in f are rounded.
hamidreza hamidi
hamidreza hamidi il 22 Dic 2018
I estimated this function and x is between 0 and 20

Accedi per commentare.

Risposte (1)

Torsten
Torsten il 17 Dic 2018
Modificato: Torsten il 17 Dic 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 Commenti
hamidreza hamidi
hamidreza hamidi il 22 Dic 2018
can I have an interval? for example data with x between 0 and 10?
Torsten
Torsten il 2 Gen 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.

Accedi per commentare.

Categorie

Scopri di più su Random Number Generation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by