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

MATLAB - subs method doesn't work on symbolic vector of indexed variables

考虑以下代码:

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]

将向量转换为数值还需要什么?

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

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. 不要在保留的变量名称或内置函数之后命名您的 variables/functions。 ans 用于 当表达式未分配给任何其他内容时的最新答案 。 (这就是为什么我将您代码中的 ans 替换为 expr