Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

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 Y(f) è la convoluzione lineare del segnale trasmesso U(f) con la risposta all’impulso del canale H(f):

Y(f)=H(f)U(f)

I ricevitori OFDM utilizzano l’equalizzazione del dominio della frequenza per recuperare il segnale originale trasmesso, in modo che:

U(f)=Y(f)H(f)

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")

Figure contains 2 axes objects. Axes object 1 with title Input signal contains an object of type stem. Axes object 2 with title Channel impulse response contains an object of type stem.

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")

Figure contains an axes object. The axes object with title Convolution Results - N= 8 contains 2 objects of type stem. These objects represent Linear, Circular.

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")

Figure contains an axes object. The axes object with title Convolution Results with Cyclic Prefix contains 2 objects of type stem. These objects represent Linear, Circular.

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.

Vedi anche

Funzioni

Argomenti complementari

Siti web esterni