2016-09-09 5 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)), но при выполнении одного и того же элемента на более сложных функциях в цикле преобразование в double каждый раз заставляет его работать очень медленно. Есть ли способ изменить Rx, чтобы дать числовой вывод?

+0

Если вам нужен цифровой вывод, просто не используйте Symbolic Toolbox. 'Rx = @ (theta) cos (theta) + sin (theta);' должно быть столь же эффективным. – TroyHaskin

ответ

1

Вы можете создать стандартную (несимволическую) анонимную функцию из вашей символической функции. Для этого используется matlabFunction

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

Тогда

>> Rxd(0.1) 
ans = 
    1.094837581924854 

Обратите внимание, что вы можете потерять точность, хотя, как вычисления сделаны в цифровой форме с самого начала, а не символически и преобразованы в double только в конце.

Смежные вопросы