Problem with plotting result

1 vue (au cours des 30 derniers jours)
Tarek Mahjoub
Tarek Mahjoub le 29 Juil 2021
Commenté : Tarek Mahjoub le 29 Juil 2021
Hi guys, I am new using Matlab and I've been posting some questions in the recent time and I hope you be patient with me. I am having a trouble with the code
c = 2; % constant
n = 100; % Generate 100 random variables.
% Set up the arrays to store variates.
x = zeros(1,n); % random variates
xy = zeros(1,n);% corresponding y values
rej = zeros(1,n);% rejected variates
rejy = zeros(1,n); % corresponding y values
irv = 1;
irej = 1;
while irv <= n
y = rand(1); % random number from g(y)
u = rand(1); % random number for comparison
if u <= 2*y/c
x(irv) = y;
xy(irv) = u*c;
irv = irv+1;
else
rej(irej) = y;
rejy(irej) = u*c; % really comparing u*c<=2*y
irej = irej + 1;
end
end
plot(x,xy)
plot(rej,rejy)
plot(0:1,2*y)
I wanted the result to be as follows : the graph of 2*y which is a segment and under this segment the accepted values and above the rejected ones. What is missing here? Thank you in advance

Réponses (1)

Dave B
Dave B le 29 Juil 2021
I'm not sure if this is what you're looking for? (I just looked at your plotting code, not at the math):
clf
scatter(x, xy, 'filled')
hold on
scatter(rej, rejy, 'filled')
plot([0 1], [0 2], 'k', 'LineWidth', 2)
Key bits:
  • use scatter for non-connected points, you could also do plot(..., 'o') for circular markers but scatter is better
  • use hold on to plot multiple things on top of eachother
  • Not sure what you doing with y, it was a random number, but I think this is what you were after based on the description and the picture (?)
  1 commentaire
Tarek Mahjoub
Tarek Mahjoub le 29 Juil 2021
Thanks a lot for the help with the plotting. Actually I was applying the acceptance-rejection method on the density function 2*y so the graph of that function was supposed to be the segment you plotted

Connectez-vous pour commenter.

Catégories

En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by