2013-12-17 2 views
6

В MATLAB я могу выдать команду:Как использовать eig с опцией nobalance, как в MATLAB?

[X,L] = eig(A,'nobalance'); 

Для того, чтобы вычислить собственные значения без balance option.

Что такое эквивалентная команда в NumPy? Когда я запускаю версию eig NumPy, она не дает того же результата, что и результат MATLAB при включенном nobalance.

+2

Похоже, что может не быть опции. Был [открытый билет] (https://github.com/numpy/numpy/issues/2060), просящий такую ​​возможность больше года. Вы можете перезвонить, чтобы добавить свою поддержку для этого и предоставить прецедент и т. Д. – horchler

+0

@horchler done. –

ответ

2

В настоящее время NumPy не может это сделать. Как сказал horchler, на данный момент открыт открытый билет для этого. Тем не менее, это можно сделать с помощью внешних библиотек. Вот я писать, как сделать это с помощью привязки Python к библиотеке NAG

http://www.walkingrandomly.com/?p=5303

Должна быть возможность сделать что-то подобное, используя любой интерфейс LAPACK, таких как Intel MKL и т.д.

+0

Это звучит как хорошая альтернатива, не могли бы вы проверить свой URL? Кажется, он не работает. –

+0

Привет, поэтому я установил все, что казалось необходимым для вашего примера, но я получаю ошибки при запуске сценария примера. Это то, что я получаю: OSError: /opt/NAG/cll6i23dcl/lib/libnagc_nag.so: undefined symbol: __svml_sin2 –

+0

Сайт tuicool украл мой контент, насколько я могу судить. URL-адрес walkrandomly работает для меня. Я использовал Windows в моем примере. Попытаюсь ли это на Linux позже сегодня. – WalkingRandomly

3

You также можно рассмотреть возможность установки GNU Octave и встроить его в Python с помощью oct2py. Например, для определения собственных значений матрицы А без балансира,

from oct2py import octave 
... 
[X,L] = octave.eig(A) 

Функция EiG в октаве не выполняет балансировку матрицы А.

Если вы хотите, чтобы сбалансировать матрицу А, вы можете идти вперед и написать:

from oct2py import octave 
... 
A = octave.balance(A) 
[X,L] = octave.eig(A) 

oct2py можно скачать с этого сайта: https://pypi.python.org/pypi/oct2py

Перед установкой oct2py, вы урожденная d, чтобы убедиться, что SciPy и GNU Octave уже установлены. Удачи!

+0

Другой способ работы (@ WalkingRandomly). Но это очень интересно. Прошло почти два года, но я все еще использую один и тот же код, поэтому я дам ему попробовать и отчитаться. Благодаря! –

+1

У меня была такая же проблема, как у вас, что я хотел бы, чтобы моя матрица не была сбалансирована в вычислении собственных значений с использованием Python. Я видел сообщение @ WalkingRandomly, но в моем университете нет коммерческой библиотеки NAG. Затем я задался вопросом, может ли свободное программное обеспечение, такое как GNU Octave, сделать это, и оно работает очень хорошо. Спасибо за ваши комментарии –