2016-09-09 19 views
1

でシンボリック関数の構築:は、次のように私は、MATLABで象徴的機能を構築しようとしているMatlabの

syms theta 
Rx(theta) = cos(theta) + sin(theta); 

私はRx(0.1)を入力すると、MATLABは、cos(1/10) + sin(1/10)

を返します。しかし、私は何をしようとしていますMatlabに数値的に評価されます。私はdouble(Rx(0.1))でそれを達成することができますが、ループ内ではるかに複雑な関数で同じことをするときは、毎回2倍の変換が非常にゆっくり実行されます。数値出力を与えるためにRx自身を変更する方法はありますか?

+0

数値出力が必要な場合は、Symbolic Toolboxを完全に使用しないでください。 'Rx = @(シータ)cos(シータ)+シアン(シータ);'と同じように有効でなければなりません。 – TroyHaskin

答えて

1

シンボリック関数から標準(非シンボリック)の無名関数を作成することができます。このためには、に象徴し、変換だけdoubleとは対照的に、計算は、最初から数値的に行われているとして、あなたが、しかし、精度を失う可能性がことmatlabFunction

syms theta 
Rx(theta) = cos(theta) + sin(theta); 
Rxd = matlabFunction(Rx); 

その後

>> Rxd(0.1) 
ans = 
    1.094837581924854 

注意を使用します最後に。

関連する問題