Использование функции matlabFunction для возврата символических собственных значений - PullRequest
0 голосов
/ 30 апреля 2018

Поскольку matlabFunction может генерировать только один выходной аргумент, как я могу использовать его для создания символического выражения для второго аргумента функции matlab? Например

 B = sym('b',[2,2]);
 [Q,Lambda]  = eig(B)

вернет собственные векторы и собственные значения B и

Лямбда = EIG (B)

возвращает только собственные значения.

Q = matlabFunction('eig(B)');

возвращает анонимную функцию, дающую мне только собственные значения B, но как мне убедить matlabFunction вернуть первый из двух аргументов и, таким образом, вернуть собственные векторы? Я предполагаю, что есть некоторое умное использование функции deal, но я не могу понять это. Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2018

Я обнаружил symfun, что решает мою проблему

B = sym('b_%d%d',[2,2]);
[Q,Lambda]  = eig(B);
Qfun        = simplify(symfun(Q,[B(1,1),B(1,2),B(2,1),B(2,2)]));
Lfun        = diag(symfun(Lambda,[B(1,1),B(1,2),B(2,1),B(2,2)]));
...