2017-02-16 18 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; 

затем, если вы вычислите г с помощью функции Subs, результатом является ожидаемое значение 8, но назначается символьной функции, gnew. Эта новая символическая функция формально зависит от переменной x.

gnew = subs(g) 

Вызов функции g (x) возвращает значение g для текущего значения x. Например, если вы назначили значение 2 для переменной х, то вызов г (х) эквивалентно вызову г (2)

g2 = g(x) 

g2 = 
4 

g2 = g(2) 

g2 = 
4 
+0

Я просто редактирую свой вопрос, чтобы сделать его более ясным. Я не хочу подставлять константу в функцию. – greenworld

+0

Я понял проблему, и я думаю, что это непросто сделать без изменения определения функции. Можно ли изменить функцию для приема двух параметров? таким образом вы можете установить параметр 'a' = 2 и параметр 'b' защитить функцию, которую вы не хотите изменять. –