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

如何在Matlab中表达这个表达式?,matlab,matlab-figure,Matlab,Matlab Figure,我想在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

我想在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);

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

看起来您没有跟踪何时使用单个数字以及何时使用数组。所有
tp
变量都应该是标量,但我不确定它们是否会是标量。检查每一个的大小,这可能会帮助你找到一个错误。我现在正试图按照你的建议。