kBob writes:
> I find the book Image Analysis, Classification and Change Detection
> in Remote Sensing, with Algorothms for ENIV/IDL by Morton Canty handy.
> He provides ENVI/IDL code to do the PCAs.
Well, I'm ashamed to say, I had read part's of Mort's book
earlier in the week and found I needed, well, more remedial
help. Quite frankly, I didn't understand a word of it. :-(
The Lindsay Smith tutorial, on the other hand, was crystal
clear. So much so that I came back to my office and wrote up
the example in IDL, just to see if I could follow it.
It turns out, that the PCOMP function in IDL gives essentially
the same answer as the tutorial (this for Jeff's benefit), but
the values are scaled slightly differently. However they
plot on exactly the same line in the end. Here is the code
I used.
; Method according to the Lindsay Smith tutorial:
; http://tinyurl.com/3aaeb
x = [2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2.0, 1.0, 1.5, 1.1]
y = [2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]
xmean = x - Mean(x)
ymean = y - Mean(y)
Window, XSIZE=600, YSIZE=800
!P.MULTI=[0,1,2]
Plot, xmean, ymean, PSYM=7
dataAdjust = Transpose([ [xmean], [ymean] ])
covArray = Correlate(dataAdjust, /COVARIANCE, /DOUBLE)
eigenvalues = EIGENQL(covArray, EIGENVECTORS=eigenvectors, /DOUBLE)
Print, 'EIGENVALUES: ', eigenvalues
Print, 'EIGENVECTORS: '
Print, eigenvectors
rowFeatureVector = eigenvectors[0,*] ; Take first principle component.
;rowFeatureVector = eigenvectors
finalData = Transpose(rowFeatureVector) ## Transpose(dataAdjust)
Plot, finaldata+Mean(x), finaldata+mean(y), PSYM=7
!P.MULTI=0
; Method using PCOMP in IDL library.
data = Transpose([[x],[y]])
r = PCOMP(data, /COVARIANCE, NVARIABLES=1, EIGENVALUES=ev, /STANDARDIZE)
Print, 'IDL EIGENVALUES: ', ev
; Compare methods.
Window, 1
PLOT, r
OPLOT, finalData, LINESTYLE=2
Window, 2
PLOT, r + Mean(x), r + Mean(y), PSYM=2
OPLOT, finalData + Mean(x), finalData + Mean(y), PSYM=7
END
This is really nice stuff and has me EXTREMELY jazzed about
the potential of it. :-)
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|