/ / Come esprimere questa espressione in Matlab? - matlab, matlab-figure

Come esprimere questa espressione in Matlab? - matlab, matlab-figure

Voglio calcolare questa espressione in Matlab,ma il mio codice genera molta NaN. In questa espressione, n = 2000 e Q = 100. Gli intervalli per L e M vanno da 10 a 100. Come risolvere questo problema. Ho incollato il mio codice qui. Qualcuno può aiutarmi? inserisci la descrizione dell'immagine qui

Questo è il mio codice:

clear all;
close all;

nCk = @(n,kVec)arrayfun(@(k)nchoosek(n,k),kVec);
n_own = 2000;
Q = 100;
[M, L ] = meshgrid(10:100, 10:100);

tp5 = 0;
for j = 1:1:min(Q,M)
tp1 = nCk(Q,j);
tp2 = nCk((n_own-Q) , (M-j));
tp3 = tp1* (tp2^2) ;
tp4 = ( nCk(n_own,M) )^2;
tp5 = tp5 + tp3 / tp4;
end

P_all_pairs_id = power( ( 1 - tp5 ),( L(L-1)/2 ) );

figure
surf( M, L, P_all_pairs_id);

risposte:

0 per risposta № 1

Dovresti provare a controllare le dimensioni di tp"s, come ha commentato David. In genere non è consigliabile utilizzare espressioni incorporate come nCk = @(n,kVec)arrayfun(@(k)nchoosek(n,k),kVec);, almeno durante il debug. Prova questo con un codice meno compatto ma più semplice.