Contenu principal

Diagrammes de dispersion et diagramme de l'œil avec les fonctions MATLAB

Cet exemple montre comment visualiser le comportement d’un signal grâce à l’utilisation de diagrammes de l'œil et de diagrammes de dispersion. Cet exemple utilise un signal QPSK qui passe à travers un filtre en racine cosinus surélevé (RRC).

Diagramme de dispersion

Configurez le filtre RRC, le schéma de modulation et les paramètres de traçage.

span = 10;          % Filter span
rolloff = 0.2;      % Rolloff factor
sps = 8;            % Samples per symbol
M = 4;              % Modulation alphabet size
k = log2(M);        % Bits/symbol
phOffset = pi/4;    % Phase offset (radians)
n = 1;              % Plot every nth value of the signal
offset = 0;         % Plot every nth value of the signal, starting from offset+1

Créez les coefficients de filtre en utilisant la fonction rcosdesign.

filtCoeff = rcosdesign(rolloff,span,sps);

Générez les symboles aléatoires pour un alphabet de taille M.

rng default
data = randi([0 M-1],5000,1);

Appliquez la modulation QPSK.

dataMod = pskmod(data,M,phOffset);

Filtrez les données modulées.

txSig = upfirdn(dataMod,filtCoeff,sps);

Calculez le SNR pour un signal QPSK suréchantillonné.

EbNo = 20;
snr = EbNo + 10*log10(k) - 10*log10(sps);

Ajoutez le canal AWGN au signal émis.

rxSig = awgn(txSig,snr,'measured');

Appliquez le filtre récepteur RRC.

rxSigFilt = upfirdn(rxSig, filtCoeff,1,sps);

Démodulez le signal filtré.

dataOut = pskdemod(rxSigFilt,M,phOffset,'gray');

Utilisez la fonction scatterplot pour afficher les diagrammes de dispersion du signal avant et après le filtrage. On peut voir que le filtre de la réception améliore la performance à mesure que la constellation correspond de mieux en mieux aux valeurs idéales. Les premiers symboles span et les derniers symboles span représentent le retard cumulé des deux opérations de filtrage et sont éliminés des deux signaux filtrés avant la production des diagrammes de dispersion.

h = scatterplot(sqrt(sps)*txSig(sps*span+1:end-sps*span),sps,offset);
hold on
scatterplot(rxSigFilt(span+1:end-span),n,offset,'bx',h)
scatterplot(dataMod,n,offset,'r+',h)
legend('Transmit Signal','Received Signal','Ideal','location','best')

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Transmit Signal, Received Signal, Ideal.

Diagramme de l'œil

Afficher 1 000 points du diagramme de l'œil du signal émis sur deux périodes de symboles.

eyediagram(txSig(sps*span+1:sps*span+1000),2*sps)

Figure Eye Diagram contains 2 axes objects. Axes object 1 with title Eye Diagram for In-Phase Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents In-phase. Axes object 2 with title Eye Diagram for Quadrature Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents Quadrature.

Afficher 1 000 points du diagramme de l'œil du signal reçu.

eyediagram(rxSig(sps*span+1:sps*span+1000),2*sps)

Figure Eye Diagram contains 2 axes objects. Axes object 1 with title Eye Diagram for In-Phase Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents In-phase. Axes object 2 with title Eye Diagram for Quadrature Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents Quadrature.

Observez que le diagramme de l'œil reçu commence à se fermer en raison de la présence du canal AWGN. De plus, le filtre a une longueur finie, ce qui contribue également au comportement non-idéal.

Voir aussi

|

Rubriques