在MATLAB中评估符号求和

时间:2015-01-27 19:27:03

标签: matlab eval

以下代码抛出错误。

syms z positive;
syms n;
syms m;
N = 10;
Ms = 10;
Es = 1;
pd = 0.9;
pd_dash = 1-pd;
pf = 0.1;
pf_dash = 1-pf;
pr = 0.1;
qr = 1-pr;
p = 0.005
pi = pf_dash*p;
pb = pd_dash*p;
qi = 1-pi;
qb = 1-pb;

sm = symsum( z^((n+1)*Es), n, 0, N-1 );
temp_sum = symsum(z^((n+m+1)*Es)*qr^(n+m)*pr, m, 0, N-1);

z=1; %assume a value of z
x = eval(sm); %works fine
y = eval(temp_sum);
% Error:The expression to the left of the equals sign is not a valid target for an assignment.

请建议解决此问题的方法。

我怀疑的问题是:temp_sum出现在分段(...)中,而eval无法评估。

1 个答案:

答案 0 :(得分:0)

你实际做了什么:

  1. 创建符号表达式
  2. 创建未使用的变量z
  3. 调用未记录的函数sym/eval
  4. 我假设你想:

    1. 创建符号表达式
    2. 用1:temp_sum=subs(temp_sum,z,1)
    3. 替换z
    4. 得到结果。在这里,我不知道你到底有什么,因为我不知道哪些变量是符号未知数和哪些常数。试试simplify(temp_sum)。如果你替换了所有未知数,它应该返回一个数字。