La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
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')
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)
Afficher 1 000 points du diagramme de l'œil du signal reçu.
eyediagram(rxSig(sps*span+1:sps*span+1000),2*sps)
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.