2016-03-24 13 views
0

Binom çalışmalarında başarıların bir fonksiyonu olarak grafikler çiziyorum. Benim Şekilde alıyorum 0'dan 10. İşte benim kod için kapsaması beklenen Y değerleri ancak son x değeridir: Yarım yanlış ve bazı tamamen yanlış birkaç şey vardırTam bir x eksenini nasıl çizdirebilirim ve sadece son değer değil

close all; clc; 

p = 0.2; 
figure; 

for j = 1:500 

    for i = 1:10 
     a = rand(); 
     success = fix(a*10); 
     y = nchoosek(10,success)*(p^success)*(1-p)^(10-success); 
     bar(success,y); 
     hold on; 
    end 

end 
+1

sonucu. Sonuçları bir dizide toplamanızı ve ardından tüm sonuçlarınızla sadece bir kez "bar" olarak adlandırmanızı öneririm. – Hoki

+0

Ama 5000 ery küçük çubuklar çiziyorsunuz. Her barda ne olmalı? her bir 'başarı'daki toplam 'y' değerlerinin toplamı? –

cevap

0

.

En büyük hata: yineleme başına tek bir çubuk çiziyorsunuz. Siz kodunuz birbiri ardına 50000 bar ile biter. Ayrıca kodunuz gerçekten de vektörize edilebilir.

p = 0.2; 
figure; 

% create lots of random numbers 
a = rand(10000,1); 
success = fix(a*10); 

% nchoosek doesnt allow vectors , so lets loop 
for ii=1:length(success) 
    nch=nchoosek(10,success(ii)); 
end 
% compute y 
y = nch.*(p.^success).*(1-p).^(10-success); 

Şimdi, 10 farklı success değerleri için y bir sürü var. Benim tahminim, aynı success değerine karşılık gelen tüm değerleri toplamak istediğinizdir. Bunun için MATLAB içinde accumarray işlevi oluşturuldu.

ybar=accumarray(success+1,y); 
% plot ybar for the unique values of success! 
bar(unique(success),ybar); 

Eğer döngü içinden `bar` aradığınız

enter image description here

+0

Ne dediğinizi anlıyorum, ama P = 0.2 olduğu için, başarı = 2 olduğunda en yüksek sonuçları almayı beklerdik. – Maguzi

+0

@Maguzi Teorik olarak ne yaptığınızı bilmiyorum, sadece kodunuzu düzelttim. Eğer migth 'y' denkleminizde bir hata var demektir o zaman –

+0

@Maguzi 'y' denkleminde -> 'nchosek' daha küçük değeri olan 'başarı' daha büyük değer verecektir. Denklemin geri kalanı, “başarı” nın daha büyük bir değerini verecektir. Bu, daha büyük değerin her zaman "başarı" nın daha küçük olduğu zaman olacağı anlamına gelir –

İlgili konular