La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Égalisation, convolution et addition de préfixe cyclique
Cet exemple présente l'égalisation dans le domaine fréquentiel et explique comment convertir la convolution circulaire en convolution linéaire. Lorsqu’on considère un modèle de canal linéaire, le signal reçu est la convolution du signal émis avec la réponse en impulsion du canal. Dans le domaine fréquentiel, le signal reçu est la convolution linéaire du signal émis avec la réponse en impulsion du canal :
Les récepteurs OFDM utilisent l’égalisation dans le domaine fréquentiel pour retrouver le signal original émis, afin que :
Le traitement FFT produit la convolution circulaire de u avec h. Pour que la convolution circulaire de u et h soit équivalente à la convolution linéaire, u et h doivent être comblés avec des zéros d’une longueur d’au moins (length(u) + length(h) - 1)
avant de réaliser la transformée de Fourier discrète (DFT, Discreet Fourier Transform). Après avoir inversé le produit des DFTs, retenez uniquement les premiers N + L - 1 éléments. Pour un exemple expliquant ce processus, consultez la rubrique Linear and Circular Convolution.
Définissez un signal d’entrée court, u1
, et la réponse en impulsion du canal, h
. Le signal d’entrée doit être plus long que la réponse en impulsion du canal. Affichez un diagramme à tiges des signaux.
u1 = 1:8; h = [0.4 1 0.4]; figure subplot(2,1,1) stem(u1); axis([0 10 0 10]) title("Input signal") subplot(2,1,2) stem(h); axis([0 10 0 2]) title("Channel impulse response")
Comparez la convolution circulaire et linéaire de u1
avec h
. Réalisez les convolutions linéaire et circulaire en utilisant respectivement les fonctions conv
et cconv
. Les effets de smearing dus au canal non idéal produisent en certains points des différences de résultats pour les convolutions linéaire et circulaire. Un préfixe cyclique (CP) permet un usage efficace de l’OFDM dans un canal non idéal avec retard de propagation inconnu.
N = length(u1); yl1 = conv(u1,h); yc1 = cconv(u1,h,N); figure; stem(yl1,"x") hold on; stem(yc1,"o") title(["Convolution Results - N=",int2str(N)]) legend ("Linear","Circular","Location","northwest")
Ajouter le préfixe cyclique (CP)
Pour le traitement OFDM, le remplissage nécessaire pour la convolution circulaire est assuré par l’ajout d’un CP aux signaux plutôt que l'ajout de zéros. L’ajout d’un CP qui répète les échantillons finaux du symbole permet :
La modélisation de la convolution linéaire d’un canal à trajets multiples sélectif en fréquence en tant que convolution circulaire
L’utilisation d'un FFT pour calculer la convolution
Un traitement simple dans le domaine fréquentiel pour l’estimation, l’égalisation et la synchronisation du canal
L’utilisation d’échantillons répétés pour les schémas de correction d’erreur sans voie de retour
L = length(h); % Length of channel N = length(u1); % Length of input signal ucp = u1(N-L+1:N); % Use last samples of input signal as the CP u2 = [ucp u1]; % Prepend the CP to the input signal yl2 = conv(u2,h); % Convolution of input+CP and channel yl2 = yl2(L+1:end); % Remove CP to compare signals figure; stem(yc1,"x") hold on; stem(yl2,"o") title("Convolution Results with Cyclic Prefix") legend ("Linear","Circular","Location","northwest")
Comparez les séquences de convolution linéaire et circulaire.
if max(yc1 - yl2(1:N)) < 1e-8 disp("Linear and circular convolution sequences match.") else disp("Received symbols do not match transmitted symbols.") end
Linear and circular convolution sequences match.