Maple 式 (x^3+x*y など) は、次の方法で Matlab に変換できます。
with(CodeGeneration):
Matlab(x^3+x*y);
ただし、Matlab には、 A*BとA.*Bの 2 種類の積があります。上記の方法でx^3+x*yが得られます。結果x.^3+x.*yを取得する便利な方法はありますか?
Mapleの言語定義CodeGeneration[Matlab]
は、要素ごとのチルダ(〜)演算子のさまざまなインスタンスを処理するように拡張できます。
自動的に` 〜` 'x*~y'
[` *`](x、 `$`、y)に単純化されるようであり、名前 "$"の存在によってハードコードされたエラーが発生するように見えるため、その名前は次のようになります。NULL
以下の使用法コードで置き換えられます。
> restart:
> with(CodeGeneration): with(LanguageDefinition):
> LanguageDefinition:-Define("NewMatlab", extend="Matlab",
> AddFunction("`~`[`^`]", [Vector,integer]::Vector,
> proc(X,Y)
> Printer:-Print(X,".^",Y)
> end proc,
> numeric=double),
> AddFunction("`~`[`*`]", [Vector,integer]::Vector,
> proc(X,Y)
> Printer:-Print(X,".*",Y)
> end proc,
> numeric=double));
> expr:=''x^~y + x^~3 + x*~y'':
> Translate(subs(` $`=NULL, expr ), language="NewMatlab");
cg = x.^y + x.^3 + x.*y;
> p := proc(x,y)
> x^~y + x^~3 + x*~y;
> end proc:
> f := subs(` $`=NULL, eval(p) ):
> Translate(f, language="NewMatlab");
function freturn = f(x, y)
freturn = x.^y + x.^3 + x.*y;
なんにせよ、Maple 2015 はこの変換を直接行うことができます。 acerから提供された追加のヘルプは必要ありません。
> f := (x,y)->x^~y + x^~3 + x*~y:
> CodeGeneration:-Matlab(f);
function freturn = f(x, y)
freturn = x .^ y + x .^ 3 + x .* y;
Matlab(x^3+x*y) 式がコード x^3+x*y を記述形式で出力する場合、単純に x.^3+x に変換できます。y 、メモ帳アプリケーションの「検索と置換」オプションを使用するだけです。すべての " " と "^" を見つけて、それらを ".*" と ".^" に置き換えます。
お役に立てれば。