2017-02-16 19 views
1
syms c A(t) v(t) 
A(t) = 
      0 
c*sin(tt(t)) 
c*cos(tt(t)) 

X = A(2) = c*sin(tt(t));(2行目の関数)はどうすれば得られますか?私はA(2)を入力すると、結果は(それが私の願いではない機能のための定数を代入し)、以下のようになります:MATLABでMatlabのシンボリック関数の行列を抽出する方法

>> A(2) 
ans = 
      0 
c*sin(tt(2)) 
c*cos(tt(2)) 

答えて

0

問題は、シンボリック関数(symfunとしてAを定義したことです)、記号式の配列ではありません。代わりに:今

syms c A tt(t) 
A = [0; 
    c*sin(tt(t)); 
    c*sin(tt(t))]; 

A(2)c*sin(tt(t))を返します。

あなたがA(t)の定義を変更することができない場合あるいは、あなたが象徴的表現の配列に変換するための中間変数に代入する必要があります

syms c A(t) tt(t) 
A(t) = [0; 
     c*sin(tt(t)); 
     c*cos(tt(t))]; 
B = A(t); 

その後、B(2)が返されますc*sin(tt(t))formulaを使用して、基礎となる式を抽出することもできます。

B = formula(A): 
0

あなたが機能を評価するために、「SUBS(F)」機能を使用するために必要。それは、X値asign後

syms g(x) 
g(x) = x^3; 

最初に関数を作成し、あなたが潜水艦の機能を使用してグラムを評価する場合

x=2; 

を、結果が期待値8であるが、それシンボリック関数gnewに代入されます。この新しい象徴的な関数は、変数xに正式に依存します。

gnew = subs(g) 

関数呼び出しg(x)は、xの現在の値に対するgの値を返します。あなたは、変数xに値2を割り当てた場合、例えば、次に(X)Gを呼び出すとGを呼び出すことと等価である(2)

g2 = g(x) 

g2 = 
4 

g2 = g(2) 

g2 = 
4 
+0

私は質問を明確にするために編集しています。私は関数に定数を代入したくない。 – greenworld

+0

私はこの問題を理解しており、関数定義を変更することなくそれを行うことは容易ではないと私は考える。 2つのパラメータを受け取るように機能を変更することは可能ですか?このようにしてパラメータ 'a' = 2を設定し、 'b'パラメータで変更したくない関数を保護することができます。 –

関連する問題