5

Maple 式 (x^3+x*y など) は、次の方法で Matlab に変換できます。

with(CodeGeneration):
Matlab(x^3+x*y);

ただし、Matlab には、 A*BA.*Bの 2 種類の積があります。上記の方法でx^3+x*yが得られます。結果x.^3+x.*yを取得する便利な方法はありますか?

4

3 に答える 3

2

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;
于 2013-02-20T22:20:59.080 に答える
1

なんにせよ、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;
于 2016-03-08T17:25:07.317 に答える
0

Matlab(x^3+x*y) 式がコード x^3+x*y を記述形式で出力する場合、単純に x.^3+x に変換できます。y 、メモ帳アプリケーションの「検索と置換」オプションを使用するだけです。すべての " " と "^" を見つけて、それらを ".*" と ".^" に置き換えます。

お役に立てれば。

于 2013-02-17T07:02:28.117 に答える