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]
评论:
- 始终避免动态变量。在您的代码中,您将
A
指定为 [1, 2]
但您的表达式中实际上并没有 A
。它有 a1
和 a2
(显然还有 b
)。
- 不要在保留的变量名称或内置函数之后命名您的 variables/functions。
ans
用于 当表达式未分配给任何其他内容时的最新答案 。 (这就是为什么我将您代码中的 ans
替换为 expr
)
考虑以下代码:
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]
评论:
- 始终避免动态变量。在您的代码中,您将
A
指定为[1, 2]
但您的表达式中实际上并没有A
。它有a1
和a2
(显然还有b
)。 - 不要在保留的变量名称或内置函数之后命名您的 variables/functions。
ans
用于 当表达式未分配给任何其他内容时的最新答案 。 (这就是为什么我将您代码中的ans
替换为expr
)