How to generate samples from a modified exponential density?

Hi everyone, The standard form of an exponential density is f(x|lambda)= lambda*exp(-x/lambda) if x>=0 and f(x|lambda)=0 if x<0.
I want to generate samples from the following density f(x|lambda, b)= lambda*exp(-(x-b)/lambda) if x>b and f(x|lambda,b)=0 if x<=b. Where b is a user-specified parameter.
Can anyone here suggest me how to do this ?
Best regards,

 採用された回答

Star Strider
Star Strider 2014 年 6 月 9 日

0 投票

This works:
lambda = 0.1;
m = 1;
n = 100;
expshft = @(b,lambda,x) (x>=b) .* lambda.*exp(-max(0, (x-b))./(b+lambda));
x = 25*rand(m,n);
R2 = expshft(10,lambda,x);
figure(1)
plot(x, R2,'*b')
grid
The actual function is ‘expshift’. The rest is demonstration code to show how it works.

2 件のコメント

Cuong
Cuong 2014 年 6 月 9 日
Thank you so much,
Your answer is very useful.
Best,
Star Strider
Star Strider 2014 年 6 月 9 日
My pleasure!
That was an interesting problem!

サインインしてコメントする。

その他の回答 (1 件)

Shashank Prasanna
Shashank Prasanna 2014 年 6 月 9 日
編集済み: Shashank Prasanna 2014 年 6 月 9 日

0 投票

You can generate uniform random numbers using the rand function and apply it to your modified density function.

カテゴリ

ヘルプ センター および File Exchange で Random Number Generation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by