Matlab[FromMatlab] - Matlab 式から Maple への変換
|
使い方
|
|
FromMatlab(s)
FromMatlab(s, evaluate )
FromMatlab(s, string )
FromMatlab(s, AddTranslator=false )
|
|
パラメータ
|
|
s
|
-
|
文字列
|
evaluate
|
-
|
(オプション) 真 / 偽
|
string
|
-
|
(オプション) 真 / 偽
|
AddTranslator
|
-
|
(オプション) 真 / 偽
|
|
|
|
|
説明
|
|
•
|
FromMatlab は Matlab 構文で書かれているステートメントを Maple 構文で書かれた同等のステートメントに変換します。
|
•
|
デフォルトでは、FromMatlab コマンドは Maple 構文への変換を表示してから変換されたコードを実行します。evaluate オプションを指定すると、最初のコード変換は表示せずに評価を実行します。
|
•
|
string オプションが指定されていると、与えられた Matlab 式は Maple の入力文字列に変換されます。一般的には、まず Matlab 式を文字列に変換し、変換が正しいか確認して、必要な調整を行ってから評価に移るのが無難です。
|
•
|
AddTranslator オプションが false (偽) に設定されている場合、トランスレータは AddTranslator 拡張機構を省略し、Matlab のファンクションコールの意味の解釈を試みずに一般的な Maple 構文への変換を行います。
|
•
|
FromMatlab は Matlab 言語のサブセットしか処理できません。とりわけ、構造体およびクラスはトランスレータによって処理されません。基本的な構文を除いて、FromMatlab がすべての Matlab 関数を網羅しているとは言えません。100 個以上の一般的な Matlab コマンドの変換が組み込まれていますが、変換できるものの中には、コマンドの最も一般的なケースしか網羅されていないものもあります。不足コマンドは AddTranslator を介して追加することができます。
|
•
|
変換された名前が AddTranslator に登録されている名前のどれとも一致しないが Maple の protected name (予約名) と完全一致する場合、その名前の先頭には m_ が付加されます。たとえば、FromMatlab("expand(x)") は Maple の expand の定義と衝突しないように m_expand(x) を生成します。保護されていない名前と完全一致した場合、m_ は付加されず、そのままの名前で生成されます。
|
•
|
基本的に、FromMatlab コマンドは Matlab 言語を使い慣れているユーザに Maple のプログラミングを習得してもらうための補助です。この観点から、変換されたコードでは、オプションを必要としたり 1 つまたは複数の Maple コマンドに対応するようなコードを隠匿しないようにしています。
|
•
|
もう一つの目的は Matlab 上での動作を Maple 上で再現するコマンドの作成です。そのため、一部のコマンドの変換はかなり冗長的になる傾向があるとともに、その場限りのプロシージャ構造なども含まれる場合があります。冗長的な変換後の Maple コードは構築の良い例とは言えません。また、Maple で一から手書きした場合とは比較できない Maple コードの構築である可能性もあります。結果として、処理に時間がかかることが考えられます。sin(x) の変換を想定します。Maple では変換時の x の値が分からないため、配列か定数かを想定する必要があります。変換では両方が考慮され、map 呼び出しが構築されます。手書きだと、その時の意図している x の値に応じて一番適切な関数が直接呼び出せます。
|
•
|
Matlab コードを Maple に変換したら、コードを見直し、絶対発生しないようなケースを削除すると、大抵の場合、コードはより追いかけやすく、より効率的になります。
|
•
|
Maple では、backslash はエスケープ文字であることにご注意ください。文字列内における \n は改行を表す 1 文字で、\\n はバックスラッシュおよび文字の n の 2 文字を表します。そのため、FromMatlab("A.\B"); の場合は \B が文字の B に解決されるため、A.B の 3 文字の数列になってしまいます。要素ごとの左除算を求めるには、FromMatlab("A.\\B"); を使用します。FromMFile を使用してコードをファイルから読み取る場合はバックスラッシュをエスケープする必要はありません。
|
|
|
例
|
|
>
|
|
>
|
|
Evaluating:
Matrix([[1, 2], [3, 4]] );
| |
| (4.1) |
>
|
|
Evaluating:
ArrayTools:-ElementMultiply(A,B);
| |
| (4.2) |
>
|
|
| (4.3) |
>
|
|
Evaluating:
mysum := proc( varargin )
uses ArrayTools;
local x;
x := ArrayTools:-AddAlongDimension(ArrayTools:-Concatenate(2, args));
return x;
end proc;
| |
| (4.4) |
>
|
|
| (4.5) |
|
|
Download Help Document
Was this information helpful?