Matlabからの返答を記号変数の形で返そうとしています。私が受信していエラーを説明するために、次のコードと関数を作成:Symbolの形式で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)
メートルファイル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
Iは、次のエラー受信午前:
を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'を' 0(2) 'を使って二重行列として初期化しています。次に、これらの要素の1つにシンボリック変数を割り当て、型の不一致を取得しようとしています。代わりに 'K = sym( 'K'、[2,2])' – Wolfie
のような 'sym'を使って出力を初期化してみてください!それを解決してくれてありがとう! – PatStarks
心配しないで、私は完全な答えとして私のコメントを追加しました。この問題が解決されるように、それを受け入れることを検討してください。ありがとう – Wolfie