MATLAB - subs方法不适用于索引变量的符号向量

时间:2017-03-16 19:44:21

标签: matlab vector substitution symbolic-math

请考虑以下代码:

A = sym('a', [1, 2]);
b = sym('b');
ans = A.^2 + b;
A = [1, 2];
b = 4;
subs(ans)

这会产生输出

  

ans = [a1 ^ 2 + 4,a2 ^ 2 + 4]

而我本来希望它产生

  

ans = [5,8]

矢量转换为数值所需的是什么?

1 个答案:

答案 0 :(得分:3)

这是一个更简单的解决方案:

syms A b;        %Initializing symbolic variables
expr = A^2 + b;  %Your expression (element-wise square is taken by default for sym class) 

A = [1 2];   b=4;  %Assigning the values
subs(expr)         %Substituting symbolic variables with corresponding assigned values  

根据需要输出:

ans = 
[ 5, 8]

<强>注释:

  1. 始终避免使用动态变量。在您的代码中,您要将A指定为[1, 2],但您的表达式中并未包含A。它有a1a2(显然b)。
  2. 不要在保留变量名或内置函数之后命名变量/函数。当表达式未分配给任何其他内容时,ans用于最近答案。 (这就是为什么我用ans
  3. 替换代码中的expr的原因