如何从Matlab函数返回符号形式的答案
问题描述:
我想从符号变量的形式返回Matlab的答案。我创建了下面的代码和功能来说明我接收到错误:如何从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
该功能正常工作,并按预期。
我该如何使这个函数返回K
作为一个符号变量?
答
你初始化使用
K(1,1) = k12(1,1);
而不是使用
K = zeros(2,2);
然后试图将一个象征性的变量分配到每台数字元素的数值矩阵,使用初始化K
作为一个象征性的2×2矩阵sym
(请参阅文档here)。
K = sym('K', [2,2]);
现在的K
每个元素是一个象征性的变量,你不会有任何问题,分配每一个到一个现有的符号变量。
您正在使用'零(2,2)'初始化输出'K'作为双重矩阵。然后你试图为这些元素之一分配一个符号变量,并得到一个类型不匹配。相反,尝试使用像'K = sym('K',[2,2])'' – Wolfie
'sym'来初始化你的输出!感谢解决它! – PatStarks
不用担心,我已将我的评论添加为完整答案。考虑接受它,以便这个问题关闭。谢谢 – Wolfie