2017-02-16 460 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));(函數在第二行)?如果鍵入A(2),其結果將是如下(它可以替代的功能,這是不是我的願望常數):如何在Matlab中提取符號函數矩陣

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

回答

0

的問題是,你定義A爲符號函數(symfun ),而不是一系列符號表達式。相反:

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

在MATLAB,你必須使用「潛艇(六)」函數計算功能。

首先創建功能:

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

之後ASIGN X值:

x=2; 

然後如果你使用潛艇功能評估克,結果是預期值8,但被賦予一個符號函數,gnew。這個新的符號函數正式依賴於變量x。

gnew = subs(g) 

函數調用g(x)返回g的當前值x的值。例如,如果你分配了值2至變量x,則調用G(X)等效於調用克(2)

g2 = g(x) 

g2 = 
4 

g2 = g(2) 

g2 = 
4 
+0

我只是編輯我的問題,使其更清晰。我不想用常數代替函數。 – greenworld

+0

我明白了這個問題,我認爲在不改變函數定義的情況下這並不容易。是否可以改變功能來接收2個參數?通過這種方式,您可以設置參數'a'= 2,'b'參數保護您不想更改的功能。 –