2017-04-07 3 views
0

Ich habe ein Spektrum (Wellenlänge (x) gegen Absorption (y)), die eine Mischung aus zwei Signalen (xa, ya) und (xb, yb) ist. Ich versuche, PCA (Code fand ich online) zu verwenden, um die Signale in (x, y) entmischen:Matlab: Hauptkomponentenanalyse auf Signal (spektrale Entmischung)

%step 1, input data 
numdata=length(data(:,1)); 
x=data(:,1); 
y=data(:,1); 

%step 2, finding a mean and subtracting 
xmean=mean(x); 
ymean=mean(y); 

xnew=x-xmean*ones(numdata,1); 
ynew=y-ymean*ones(numdata,1); 

subplot(3,1,1); 
plot(x,y, 'o'); 
title('Original Data'); 

%step 3, covariance matrix 
covariancematrix=cov(xnew,ynew); 

%step 4, Finding Eigenvectors 
[V,D] = eig(covariancematrix); 
D=diag(D); 
maxeigval=V(:,find(D==max(D))); 


%step 5, Deriving the new data set 
%finding the projection onto the eigenvectors 

finaldata=maxeigval'*[xnew,ynew]'; 
subplot(3,1,2); 
stem(finaldata, 'DisplayName', 'finaldata', 'YDataSource', 'finaldata'); 
title('PCA 1D output ') 
%we do a classification now 
subplot(3,1,3); 
title('Final Classification') 
hold on 
for i=1:size(finaldata,2) 
    if finaldata(i)>=0 
     plot(x(i),y(i),'o') 
     plot(x(i),y(i),'r*') 

    else 
     plot(x(i),y(i),'o') 
     plot(x(i),y(i),'g*') 
    end 

end 

Wie am besten, die PCA Ausgang anzuwenden, um entmischen (y) in Komponenten ya und yb? Ich habe keine Erfahrung mit PCA und kann keine guten Tutorials online für diese Anwendung finden. Ist es am besten, die Eigenvektoren für das Trainingsspektrum zu generieren und dann mit dem Testspektrum zu vergleichen? Dank

enter image description here

+0

Für welche Art von Anwendung verwenden Sie es? – m7913d

+0

Für jedes Element in Matrix (Posx, Posy, Spektrum), bestimmt die Beiträge von ya und yb Spektren oben und das wahrscheinlichste Spektrum (d. H. Entweder ya oder yb) – 2one

Antwort

0

Abschnitt 3.3 dieser Arbeit ist informativ: https://brage.bibsys.no/xmlui//bitstream/handle/11250/2371385/12296_FULLTEXT.pdf?sequence=1&isAllowed=y

„PCA selbst kein Klassifikationsverfahren ist aber das wurde auf der Grundlage der Erkenntnis gemacht, von denen Absorptionsspektren zu dem Material gehörten PCA kann. Sie werden jedoch als ein Werkzeug bei der Klassifizierung verwendet.Um dies zu tun, braucht man Trainingsdaten.PCA wird an den Trainingsdaten durchgeführt, und einige Testdaten werden auf der Grundlage der Trainingsdatenprojiziert PCA-Zerlegung. "

Also ich denke, ich kann den obigen Code als Ausgangspunkt verwenden.

Verwandte Themen