如何 return 来自 Matlab 函数的符号形式的答案
How to return answers from Matlab function in form of Symbols
我正在尝试 return 来自 Matlab 的一个符号变量形式的答案。我创建了以下代码和函数来说明我收到的错误:
clc
clear all
syms L real;
% L = 1 % The code works when I uncomment this line
k1 = [ L, -L;
-L, 2*L]
k2 = [4*L^2, -L;
0, L]
K = GlobalStiffnessMatrix(k1,k2)
m文件GlobalStiffnessMatrix.m如下图:
function K = GlobalStiffnessMatrix(k12,k23)
K = zeros(2,2);
K(1,1) = k12(1,1);
K(1,2) = k12(1,2);
K(2,1) = K(1,2);
K(2,2) = k12(2,2) + k23(1,1);
end
我收到以下错误:
The following error occurred converting from sym to double:
Error using symengine (line 59)
DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use VPA.
我尝试在函数本身和模拟代码中使用 VPA,但仍然收到相同的错误。当然,当我取消注释行设置 L = 1
时,该功能可以正常工作并且符合预期。
如何使这个函数 return K
成为一个符号变量?
您正在使用
初始化一个数值矩阵
K = zeros(2,2);
然后尝试使用
为每个数字元素分配一个符号变量
K(1,1) = k12(1,1);
相反,使用 sym
将 K
初始化为符号 2x2 矩阵(请参阅文档 here)。
K = sym('K', [2,2]);
现在 K
的每个元素都是一个符号变量,您可以毫无问题地将每个元素分配给现有的符号变量。
我正在尝试 return 来自 Matlab 的一个符号变量形式的答案。我创建了以下代码和函数来说明我收到的错误:
clc
clear all
syms L real;
% L = 1 % The code works when I uncomment this line
k1 = [ L, -L;
-L, 2*L]
k2 = [4*L^2, -L;
0, L]
K = GlobalStiffnessMatrix(k1,k2)
m文件GlobalStiffnessMatrix.m如下图:
function K = GlobalStiffnessMatrix(k12,k23)
K = zeros(2,2);
K(1,1) = k12(1,1);
K(1,2) = k12(1,2);
K(2,1) = K(1,2);
K(2,2) = k12(2,2) + k23(1,1);
end
我收到以下错误:
The following error occurred converting from sym to double: Error using symengine (line 59) DOUBLE cannot convert the input expression into a double array. If the input expression contains a symbolic variable, use VPA.
我尝试在函数本身和模拟代码中使用 VPA,但仍然收到相同的错误。当然,当我取消注释行设置 L = 1
时,该功能可以正常工作并且符合预期。
如何使这个函数 return K
成为一个符号变量?
您正在使用
初始化一个数值矩阵K = zeros(2,2);
然后尝试使用
为每个数字元素分配一个符号变量K(1,1) = k12(1,1);
相反,使用 sym
将 K
初始化为符号 2x2 矩阵(请参阅文档 here)。
K = sym('K', [2,2]);
现在 K
的每个元素都是一个符号变量,您可以毫无问题地将每个元素分配给现有的符号变量。