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

时间:2015-02-18 01:00:47

标签: matlab matlab-figure

我想在Matlab中计算这个表达式,但我的代码会产生大量的NaN。在此表达式中,n = 2000且Q = 100.L和M的范围是10到100.如何解决此问题。我在这里粘贴我的代码。有人可以帮帮我吗? enter image description here

这是我的代码:

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

1 个答案:

答案 0 :(得分:0)

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