Разница между матричными обозначениями MATLAB - PullRequest
1 голос
/ 13 ноября 2009

Как вы читаете следующие MATLAB коды?

# 1

K>> [p,d]=eig(A)                     // Not sure about the syntax.

p =

    0.5257   -0.8507
   -0.8507   -0.5257


d =                               // Why do you get a matrix?

    0.3820         0                  
         0    2.6180

# 2

K>> p,d=eig(A)                  // Not sure about the syntax.

p =

    0.5257   -0.8507
   -0.8507   -0.5257


d =                                       // Why do you get a vector?

    0.3820
    2.6180

, где

A =

     2     1
     1     1

Ответы [ 2 ]

18 голосов
/ 13 ноября 2009

Во втором случае p,d=eig(A) MATLAB просто печатает ранее вычисленное значение p из случая 1, а затем запускает команду d=eig(A).

Перед запуском варианта 2 попробуйте

>> clear p d

Если вы затем запустите p,d=eig(A), он вернет ошибку, сообщающую, что p является неопределенной функцией или переменной.

С help eig:

E = EIG(X) is a vector containing the eigenvalues of a square
matrix X.

[V,D] = EIG(X) produces a diagonal matrix D of eigenvalues and a
full matrix V whose columns are the corresponding eigenvectors so
that X*V = V*D.

Обратите внимание, что опция V,D = EIG(X) отсутствует. Функции MATLAB, которые возвращают более одного значения, сгруппируют их в формате:

[ ] = function()
3 голосов
/ 13 ноября 2009
p,d=eig(A) 

совпадает с

p
d=eig(A)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...