2012-11-22 9 views
5

Sto usando Matlab. Ho un vettore di colonne di grandi dimensioni costituito da valori complessi. per esempio.Matlab: Color grade a Constellation Diagram

data = [
-0,4447 + 0.6263i
0,3114 + 0.8654i
0,7201 + 0.6808i
0,7566 + 0.8177i
-0,7532 - 0.8085i
-0,7851 + 0.6042i
-0,7351 - 0.8725i
-0,4580 + 0.8053i
0,5775 - 0.6369i
0,7073 - 0.5565i
0,4939 - 0.7015i
-0,4981 + 0.8112i
....
]

Questo rappresenta un diagramma di costellazione che è mostrata di seguito.

enter image description here

vorrei colorare grado i punti di costellazione a seconda della frequenza in un punto particolare. Presumo che ho bisogno di creare un istogramma, ma non sono sicuro di come farlo utilizzando i vettori complessi e poi come tracciare il grado del colore. Qualsiasi aiuto apprezzato.

+1

Mi spiace, ma non sono in grado di capire cosa intendete esattamente con "* per colorare i punti della costellazione a seconda della frequenza in un punto particolare *". Puoi essere più esplicito sulla matematica di ciò che vuoi fare? – Acorbe

+0

Volete tracciare il diagramma della costellazione di un segnale OFDM con colori diversi per ciascuna sottoportante? – Deve

+0

Ci scusiamo, ma il grado del colore intendo: "La funzione Grado del colore fornisce un tracciato di persistenza infinita in cui la frequenza di occorrenza di un punto sul grafico è indicata dal suo colore." Un esempio è dato qui: https://www.dropbox.com/s/ujlnb29xvybmbtr/colour%20grade%20QPSK.JPG – user1844666

risposta

2

Credo che si vuole fare una mappa di calore:

histdata = [real(data), imag(data)]; 
nbins_x = nbins_y = 10; 
[N, C] = hist3(histdata, [nbins_x, nbins_y]); % the second argument is optional. 
imagesc(N); 

Qui hist3 crea l'istogramma-matrice, imagesc disegna una mappa di calore in scala. Se preferisci una visualizzazione 3D, digita semplicemente hist3(histdata).

Se si fa clic con il pulsante destro del mouse su N nella finestra dell'area di lavoro, sono disponibili molte altre opzioni di visualizzazione. Suggerisco anche di provare contourf(N) che è una trama di contorno piena.

+0

Grazie per il vostro aiuto. Heat-map era esattamente la frase che stavo cercando. – user1844666

+0

nessun problema, amico. –

1

Quindi, quello che vuoi fare è trovare un istogramma di due-2. Il modo più semplice sarebbe quella di separare i punti reali e immaginari, e utilizzare la funzione hist2d, in questo modo:

rdata=real(data); 
idata=imag(data); 

hist2d([rdata;idata]); 
+0

Grazie per il vostro aiuto, questo ha funzionato benissimo – user1844666