我想在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);
答案 0 :(得分:0)
您应该尝试检查tp's
的大小,正如David所评论的那样。通常不建议使用内联表达式,例如nCk = @(n,kVec)arrayfun(@(k)nchoosek(n,k),kVec);
,至少在调试期间。尝试使用不那么紧凑但更简单的代码。