読者です 読者をやめる 読者になる 読者になる

粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

MATLAB シンボリック変数の行列への代入に関するメモ

メモ メモ-MATLAB

MATLABのシンボリック変数を用いた計算はとっても便利ですよね。

コーディングも簡単なので効率良く使えるなら積極的に用いていきたいですが,
自分がハマったところをちょっと書き記しておきます。

シンボリック変数の行列やベクトルへの代入

以下のように事前に用意した行列にシンボリック変数を代入したい時があります。

mat = zeros(2);

syms x y

mat(1,1) =  x^2+y;

ちなみにこのコードは以下の様なエラーを吐きます。


sym から double への変換中に、以下のエラーが発生しました:
エラー mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.



シンボリック変数は普通に定義した行列などには代入できないようです。

解決策

10分ほどハマって調べた後,行列をシンボリックに変換すれば良いことを知りました。

変換したい行列 M を sym(M) のようにしてシンボリックの行列に変換することで対応できます。
こんな簡単なことなのに意外と調べるのに時間がかかるのです。
これは完全に自分のための備忘録になります。


改善したコードは以下のとおりです。

mat = sym(zeros(2));

syms x y

mat(1,1) =  x^2+y;

参考:
シンボリック変数、シンボリック式、シンボリック関数、シンボリック行列を作成 - MATLAB sym - MathWorks 日本