Computational neuroscience - I have a 116x116x226 I need to calculate the eigenvalues for this array can anyone help me?

1 回表示 (過去 30 日間)
I have tried to use eig but doesn't work for 3D arrays. Any help will be greatly appreciated

回答 (2 件)

Roger Stafford
Roger Stafford 2018 年 2 月 20 日
編集済み: Roger Stafford 2018 年 2 月 20 日
A 3D array is not a matrix, and matrix multiplication is not defined for such arrays. Eigenvalues and eigenvectors are defined in terms of matrix multiplication, and therefore do not have a definition for 3D arrays.
You can, however, find eigenvalues and vectors for each of the 226 layers in your array since each one is a square matrix. That would make sense.
  3 件のコメント
Roger Stafford
Roger Stafford 2018 年 2 月 20 日
編集済み: Roger Stafford 2018 年 2 月 20 日
Yes, each separate 116-by-116 layer of your array is a matrix, and in general will have 116 eigenvalues as well as the same number of eigenvectors, one for each eigenvalue. That will give you a total of 116*226 eigenvalues in general and 116*116*226 components of eigenvectors, but I don't know what you want to do with all of them.
I couldn't understand your "untitled.png" image, and I don't know what you mean by "these diagonal values on 226 pages".
Andrei Bobrov
Andrei Bobrov 2018 年 2 月 20 日
@Spleffy: Please attach your csv - file or him small part.

サインインしてコメントする。


Andrei Bobrov
Andrei Bobrov 2018 年 2 月 20 日
編集済み: Andrei Bobrov 2018 年 2 月 20 日
d = xlsread('path_to_your_file\NT example.xls');
[m,n] = size(d);
ii = rem(0:n-1,m)+1 ~= 1;
nn = 1:n;
n1 = nn(ii);
n2 = repmat(1:m,1,ceil(n/m));
n2 = n2(nn);
n2 = n2(1:end-1);
n2 = n2(n2 ~= m);
out = d(sub2ind([m,n],n2,n1));
second variant
[m,n] = size(d);
m2 = m*m;
out = d((m+1:m+1:m2)' + (0 : ceil(n/m)-1)*m2);

カテゴリ

Help Center および File ExchangeLinear Algebra についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by