我想從符號變量的形式返回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
作爲一個符號變量?
您正在使用'零(2,2)'初始化輸出'K'作爲雙重矩陣。然後你試圖爲這些元素之一分配一個符號變量,並得到一個類型不匹配。相反,嘗試使用像'K = sym('K',[2,2])'' – Wolfie
'sym'來初始化你的輸出!感謝解決它! – PatStarks
不用擔心,我已將我的評論添加爲完整答案。考慮接受它,以便這個問題關閉。謝謝 – Wolfie