I have tried to ask the same question in the math site on stack exchange but no real joy. Apologises I'd this is the wrong forum.

I am trying to compute the PCA of a spectrogram.. It is 486x128 after I compute the covariance matrix, the resulting matrix is a square matrix containing 128x128 dimensions. Now, I want to compute the Eigen values for this. So far, I have computed the eigen values for a 2x2, 3x3 as well as a 4x4 matrix and this makes sense.

I cannot for the life of me think how I would take the concepts from this and apply it to a 128x128 matrix. When I compute the Eigenvalues and vectors in Matlab, returned is a similar or same size 128x128 matrix containing the eigenvalues and eigenvectors.

In order to solve this problem, shall I therefore compute the eigen value for each of the blocks contained in the spectrogram (I.e. this will give me 128 eigen values) or is there another way to calculate based off this size of a matrix?

I hope someone can help

  • $\begingroup$ Some clarification: is the problem calculating the eigenvalues of a rectangular matrix rather than square? What 'concepts' are you referring to? $\endgroup$ – geometrikal Jun 7 '14 at 9:29
  • $\begingroup$ @geometrikal Hey, no, basically.. In the past, for calculating the Eigen values of a 2x2 I can calculate using: $\frac{a+b\pm\sqrt{(a+b)^2-4(ab-c^2)}}2.$ but I can't do it for this. As, this produces 2 eigen values.. Whereas when I compute [U] = eig(cov(d)) which produces 128x1 of Eigen values. So, in order to compute the Eigen values on a larger scale matrix (like the 128x128) do I therefore need to take the Eigenvalues for each of the blocks within the matrix? $\endgroup$ – Phorce Jun 7 '14 at 10:01
  • $\begingroup$ I am sure there would be some methods to compute eigen vectors and eigen values, in Matlab. Use that, tying to do so manually is not necessary nor recommended, unless you have some other constraints or are trying to learn about coding of SVD. $\endgroup$ – tpb261 Jun 7 '14 at 12:18
  • $\begingroup$ @tpb261 I know of ways in Matlab. I'm trying to learn the methods and actually how to do it. $\endgroup$ – Phorce Jun 7 '14 at 19:09
  • $\begingroup$ This is one method: en.wikipedia.org/wiki/QR_algorithm . You don't break it down into 2x2 / 3x3 blocks from what I can tell. $\endgroup$ – geometrikal Jun 8 '14 at 10:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.