2016-07-03 18 views
1

Ich fragte mich, ob jemand mir helfen könnte, diesen Teil meines Codes zu vektorisieren. Hier ist bin_pdf Binomialkoeffizientenfunktion. pb und pd sind Skalarparameter. Danke!Wie man abhängige For-Loops in Matlab vektorisieren

for t=0:min(T,r) 
     for n=0:r-t 
      pp = (bin_pdf(n,pb,r-t) * bin_pdf(t,pd,min(T,r))); 
      pt = pt + t/r * pp; 
      pn = pn + n/r * pp; 
      pc = pc + (r-t-n)/r * pp; 
     end 
    end 

wo

function p = bin_pdf(x,rho,n) 
if (x > n) || (n < 0) 
    p = 0; 
else 
    p = Choosenk(n,x) * rho^x * (1-rho)^(n-x); 
end 

und

function C=Choosenk(n,k) 
if k>n/2 
    k=n-k; 
end; 
C=1; 
for i=0:k-1 
    C=C*(n-i)/(k-i); 
end 
end 
+0

Wie ist die Form von pp, pt, pn und pc? Sind sie Skalare, Vektoren oder Arrays? Und welche der Mengen wird ausgegeben, wenn Sie mit der Doppelschleife fertig sind? – chipaudette

+0

@chipaudette Ich füge den Inhalt von bin_pdf unten hinzu. pp, pt, pn und pc sind skalar. Ich brauche die endgültigen Ergebnisse von ihnen nach allen Iterationen. –

+0

Kannst du nicht einfach ['binopdf'] (http://es.mathworks.com/help/stats/binopdf.html) verwenden? –

Antwort

0

Dies ist die vektorisiert Choosenk ist. Wenn Sie es nicht woanders anrufen, könnten Sie es in das bin_pdf integrieren.

function C=Choosenk(n,k) 
if k>n/2 
    k=n-k; 
end; 
C=prod((n-k+1:n)./(1:k)); 
end 
+0

Danke! Irgendwelche Ratschläge für den Rest des Codes? –

+0

ich kann es versuchen. Könnten Sie bitte einige Datenbeispiele in Ihrer Frage angeben? – Finn

+0

gibt es keine spezifischen Nummern für sie. Sie können wählen, was Sie für sie wollen. Vielen Dank! –