如何在Matlab中表达这个表达式?

How to express this expression in Matlab?

我想在 Matlab 中计算这个表达式,但我的代码生成了很多 NaN。在这个表达式中,n = 2000 和 Q = 100。L 和 M 的范围是从 10 到 100。如何解决这个问题。我在这里粘贴我的代码。任何人都可以帮助我吗?

这是我的代码:

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);

您应该尝试检查 tp's 的大小,正如 David 评论的那样。通常不建议使用内联表达式,例如 nCk = @(n,kVec)arrayfun(@(k)nchoosek(n,k),kVec);,至少在调试期间是这样。用不太紧凑但更简单的代码试试这个。