Equalizzazione, convoluzione e aggiunta di prefisso ciclico
Questo esempio introduce l’equalizzazione del dominio della frequenza e mostra come convertire la convoluzione circolare in convoluzione lineare. Quando si considera un modello di canale lineare, il segnale ricevuto è la convoluzione del segnale trasmesso con la risposta all’impulso del canale. Nel dominio della frequenza, il segnale ricevuto è la convoluzione lineare del segnale trasmesso con la risposta all’impulso del canale :
I ricevitori OFDM utilizzano l’equalizzazione del dominio della frequenza per recuperare il segnale originale trasmesso, in modo che:
L’elaborazione dell’FFT rende la convoluzione circolare di u con h. Affinché la convoluzione circolare di u e h sia equivalente alla convoluzione lineare, u e h devono essere riempiti di zeri fino ad una lunghezza di almeno (length(u) + length(h) - 1)
, prima di prendere la trasformata discreta di Fourier (DFT). Dopo aver invertito il prodotto dei DFT, conservare solo i primi elementi N + L - 1. Per vedere un esempio che dimostra questo processo, vedere l’argomento Linear and Circular Convolution.
Definire un segnale u1
in entrata breve e la risposta all’impulso del canale h
. Il segnale in entrata deve essere più lungo della risposta all’impulso del canale. Visualizzare un grafico a stelo dei segnali.
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")
Confrontare la convoluzione circolare e lineare di u1
con h
. Eseguire la convoluzione lineare e circolare utilizzando rispettivamente le funzioni conv
e cconv
. Gli effetti di sbavatura dovuti al canale non ideale comportano che la convoluzione lineare e circolare restituiscano risultati diversi in alcuni punti. Un prefisso ciclico (CP) consente un utilizzo efficace dell’OFDM in un canale non ideale con ritardo di propagazione sconosciuto.
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")
Aggiunta di un prefisso ciclico (CP)
Per l’elaborazione OFDM, il riempimento necessario per la convoluzione circolare è fornito dall’aggiunta di un CP piuttosto che dal riempimento del segnale con zeri. L’aggiunta di un CP che ripete i campioni finali del simbolo consente:
La modellazione della convoluzione lineare di un canale multipercorso a frequenza selettiva come convoluzione circolare
Utilizzo dell’FFT per calcolare la convoluzione
La semplice elaborazione nel dominio della frequenza per la stima, l’equalizzazione e la sincronizzazione del canale
La ripetizione di campioni da utilizzare negli schemi di correzione dell’errore in avanti
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")
Il confronto tra le sequenze di convoluzione lineare e circolare.
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.