如何在Matlab中使用符号表达式中的循环?

时间:2018-04-07 15:10:43

标签: matlab

在Matlab中使用 nchoosek 函数时遇到麻烦,

警告是:Result may not be exact. Coefficient is greater than 9.007199e+15 and is only accurate to 15 digits.

所以我决定尝试使用符号表达式,如:

evalin(symengine,'nchoosek(100,50)')

它运行良好,但我想循环表达式,例如:

 for i=1:50;
    c(i)=evalin(symengine,'nchoosek(50,i)'); end

但它没有用,有什么建议吗?

2 个答案:

答案 0 :(得分:0)

由于i是一个数字而不是字符串部分中的setecetd,您应该通过将i的值转换为字符串来创建字符串。因此,您可以尝试:

for i=1:50
    c(i)=evalin(symengine,['nchoosek(50,',num2str(i),')']); 
end

答案 1 :(得分:0)

在这种情况下使用fevalevalin更容易,因此您不必手动将整数转换为字符串:

for i = 1:50
    c(i) = feval(symengine, 'nchoosek', 50, i);
end

但你根本不需要这样做。你可以通过确保至少有一个输入参数是符号来调用nchoosek的符号版本:

for i = 1:50
    c(i) = nchoosek(sym(50),i);
end