D
Dhruva
Guest
Szanowny Panie!
Jestem smulating OFDM w programie Matlab
ale w tym wymienione i kod nie jestem w stanie sporządzić wykres między ci i BER (tj. SNR n bitów wskaźnik błędu tylko jeden punkt jest wyświetlany.
plz ma wyglądać
i pomóc
gdzie i poszło nie tak plz prawidłowe
dzięki
Dhruva
Symulacja efektu% z interfarence hałasu
%
%
% CE danych GI GI GI danych ... (6symbols danych)
%%********************** Część przygotowań ************************* **pkt = 52;% liczba równoległych kanałów do przekazywania (punkty)
fftlen = 64;% FFT length
noc = 53;% liczby przewoźników
nd = 6;% Liczba symbol OFDM informacji na jednej pętli
knd = 1;% liczby znanych estymacji kanału (CE) symbol OFDM
ml = 2;% poziomu modulacji QPSK
sr = 250000% Symbol Rate OFDM (250 ksyombol / s)
br = sr .* ml; Bit rate% na przewoźnika
gilen = 16;% Długość odcinka kontrolne (punkty)
ebn0 = 1000; Eb/N0%%---------------------- Fading inicjalizacji ----------------------TSTP = 1/sr / (fftlen gilen);% Czas rezolucji
ITAÚ = [0];% Przyjazd czasu dla każdego multipath znormalizowany przez TSTP
dlvl1 = [0];% średniej mocy dla każdego multipath znormalizowana poprzez bezpośrednie fali.
n0 = [6];% Liczba fal wygenerować Fading N0 (1), N0 (2)
Th1 = [0,0];% początkowej fazie opóźniona fala
itnd1 = [1000];% ustalonego na blaknięcie counter
now1 = 1;% Liczba DirectWave Liczba opóźniona fala
fd = 150;% maksymalnej częstotliwości Dopplera
mieszkania = 0;% mieszkanie czy też nie (zob. ofdm_fading.m)
itnd0 = ND * (fftlen gilen) * 10;% Liczba Fading Licznik pominąć%----------------- Inicjalizacji Zakłócenia --------------------ci = 10;% C / I ratio
ML2 = 2;% modulacji poziomuitau2 = [0];
dlvl2 = [0];
N02 = [6];
Th2 = [0,0];
itnd2 = [10000 floor (rand (1) * 10) * 1000];
now2 = 1;
FD2 = fd;
Flat2 = 0;
itnd02 = ND * (fftlen gilen) * 300;% Liczba Fading Licznik pominąćSklep%% wszystkich parametrów w jednej matrycy "fadingpara"fadingpara = zeros (8, długość (itau2));
fadingpara (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itau2;
fadingpara (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= dlvl2;
fadingpara (3,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= n02;
fadingpara (4,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Th2;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
fadingpara (6,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= now2;
fadingpara (7,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= FD2;
fadingpara (8,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Flat2;%************************** Głównej części pętli ******************** ******nloop = 1000% Liczba pętli symulacjiNOE = 0;% ilości danych o błędzie
skinienie = 0;% Liczba przesyłanych danych
EOP = 0;% Liczba błędów pakietu
nop = 0;% Liczba przekazywanych pakietów%************************** Nadajnik ********************** *******
dla III = 1: nloopseldata = rand (1, pkt II * * ml)> 0,5;% DC = 0paradata = zmienią (seldata, para, ND * ml); wielkość% (51 * ND * ml)%-------------- Ml modulacji ----------------[ich, qch] = qpskmod (paradata, para, nd, ml);
kmod = 1/sqrt (2);
ich = ich .* kmod;
qch = qch .* kmod;Danych CE% generacji
kndata = zeros (1, fftlen);
kndata0 = 2 .* (rand (1,52)> 0,5) -1;
kndata (2:27) = kndata0 (1:26);
kndata (39:64) = kndata0 (27:52);
ceich = kndata;% CE: BPSK
ceqch = zeros (1,64);%------------- Mapowanie danych (DC = 0) -----------[ICH1, qch1] = crmapping (ich, qch, fftlen, nd);ICH2 = [ceich.ICH1];% I-kanał transmisji danych
qch2 = [ceqch.qch1];% Q-kanał transmisji danych%------------------- Ifft -------------------x = ICH2 qch2 .* I;
y = ifft (x);
ICH3 = real ;
qch3 = imag ;%---------- Gurad przedział wstawiania ---------fftlen2 = fftlen gilen;
[ICH4, qch4] = giins (ICH3, qch3, fftlen, gilen, nd 1);%---------- Tłumienie Obliczanie ----------
spow = suma (ich4. ^ 2 qch4. ^ 2) / nd./52;
kontaktów = 0.5 * spow * sr / br * 10. ^ (-ebn0/10);
kontaktów = sqrt (kontaktów);%********************** Kanał Fading ************************* *****
% Jeśli chciałbyś do symulacji wyników w zaniku, usuń "*"
% od czterech sentenses
[ifade, qfade, rampa, rcos, rsin] = sefade (ICH4, qch4, ITAÚ, dlvl1, Th1, N0, itnd1, now1, długość (ICH4), TSTP, fd, mieszkanie);
itnd1 = itnd1 itnd0;% Updata Fading counter
ICH4 = ifade;
qch4 = qfade;%%% Ingerencji Ponadto fala
Zakłóceń%
[iintw, qintw] = interwave (ci, spow, ML2, długość (ICH4), TSTP, fadingpara);
itnd2 = itnd2 itnd02;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
ICH4 = ICH4 iintw;
qch4 = qch4 qintw;%*************************** Receiver ********************* ********
%--------------- Ponadto AWGN ---------------
[ICH5, qch5] = Grzebień (ICH4, qch4, do kontaktów);%---- Perfect Fading odszkodowania za jedną ścieżkę Fading ----
% Jeśli chcesz, aby symulować wydajność w doskonałej odszkodowanie, należy usunąć "*"
% od czterech sentenses
% ifade2 = 1./ramp .* (rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% qfade2 = 1./ramp .* (-rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% ICH5 = ifade2;
% qch5 = qfade2;%----------- Guard Interval usunięcia ----------[ICH6, qch6] = girem (ICH5, qch5, fftlen2, gilen, nd 1);%------------------ FFT --------------------RX = ICH6 qch6 .* I;
ry = fft (RX);
ICH7 = real (ry);
qch7 = imag (ry);%-------------- Fading odszkodowania symbolem CE --------------
%
% Jeśli chciałbyś do symulacji wyników w CE na odszkodowanie, należy usunąć "*"
% w tym obszarze
%Przygotowanie% znane dane CE
ce = 1;
ice0 = ICH2 , CE);
qce0 = qch2 , CE);% Przy danych CE z otrzymanych danych
ice1 = ICH7 , CE);
qce1 = qch7 , CE);% Obliczenia odwrotnej rotacji
iv = real ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));
qv = imag ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));Macierz% w odwrotnej rotacji
ieqv1 = [IV IV IV IV IV IV IV];
qeqv1 = [QV QV QV QV QV QV QV];Rotacji odwróć%
icompen = real ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
qcompen = imag ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
ICH7 = icompen;
qch7 = qcompen;%---------- Usunięcie symbolu CE ----------------ICH8 = ICH7 , knd 1: nd 1);
qch8 = qch7 , knd 1: nd 1);%---------- DC i usuwanie danych pilotażowych --------[ICH9, qch9] = crdemapping (ICH8, qch8, fftlen, nd);%----------------- Demoduration --------------ICH10 = ich9./kmod;
qch10 = qch9./kmod;
[demodata] = qpskdemod (ICH10, qch10, para, nd, ml);%-------------- Obliczenia błędu ----------demodata1 = zmienią (demodata, 1, pkt II * * ml);
noe2 = sum (abs (demodata1-seldata));
NOD2 = długość (seldata);% Obliczenia PER
jeśli noe2 ~ = 0
EOP = EOP 1;
w przeciwnym razie
EOP = EOP;
koniec
EOP;
nop nop = 1;% Obliczenie BER
NOE = noe noe2;
skinienie głową = NOD2;printf ( "% d \ t% e \ t% d \ n", III, noe2/nod2, EOP);
na = EOP / nop;
BER = noe / skinienie;
semilogy (ci, BER ,'-*');
legend ( 'ber wyników');
plot ( "SNR ');
ylabel ( 'ber');
koniec%********************** Wyniku Wyjście ************************* **printf ( "% f \ t% e \ t% e \ t% d \ t% d \ n", ci, BER, na, nloop, fd);fid = fopen ( "BERofdmci.dat ',' ');
fprintf (fid, '% f \ t% e \ t% e \ t% d \ t% d \ n ", ci, BER, na, nloop, fd);
fclose (fid);%******************** Końcu pliku ************************** *
Symulacja efektu% z interfarence hałasu
%
%
% CE danych GI GI GI danych ... (6symbols danych)
%%********************** Część przygotowań ************************* **pkt = 52;% liczba równoległych kanałów do przekazywania (punkty)
fftlen = 64;% FFT length
noc = 53;% liczby przewoźników
nd = 6;% Liczba symbol OFDM informacji na jednej pętli
knd = 1;% liczby znanych estymacji kanału (CE) symbol OFDM
ml = 2;% poziomu modulacji QPSK
sr = 250000% Symbol Rate OFDM (250 ksyombol / s)
br = sr .* ml; Bit rate% na przewoźnika
gilen = 16;% Długość odcinka kontrolne (punkty)
ebn0 = 1000; Eb/N0%%---------------------- Fading inicjalizacji ----------------------TSTP = 1/sr / (fftlen gilen);% Czas rezolucji
ITAÚ = [0];% Przyjazd czasu dla każdego multipath znormalizowany przez TSTP
dlvl1 = [0];% średniej mocy dla każdego multipath znormalizowana poprzez bezpośrednie fali.
n0 = [6];% Liczba fal wygenerować Fading N0 (1), N0 (2)
Th1 = [0,0];% początkowej fazie opóźniona fala
itnd1 = [1000];% ustalonego na blaknięcie counter
now1 = 1;% Liczba DirectWave Liczba opóźniona fala
fd = 150;% maksymalnej częstotliwości Dopplera
mieszkania = 0;% mieszkanie czy też nie (zob. ofdm_fading.m)
itnd0 = ND * (fftlen gilen) * 10;% Liczba Fading Licznik pominąć%----------------- Inicjalizacji Zakłócenia --------------------ci = 10;% C / I ratio
ML2 = 2;% modulacji poziomuitau2 = [0];
dlvl2 = [0];
N02 = [6];
Th2 = [0,0];
itnd2 = [10000 floor (rand (1) * 10) * 1000];
now2 = 1;
FD2 = fd;
Flat2 = 0;
itnd02 = ND * (fftlen gilen) * 300;% Liczba Fading Licznik pominąćSklep%% wszystkich parametrów w jednej matrycy "fadingpara"fadingpara = zeros (8, długość (itau2));
fadingpara (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itau2;
fadingpara (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= dlvl2;
fadingpara (3,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= n02;
fadingpara (4,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Th2;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
fadingpara (6,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= now2;
fadingpara (7,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= FD2;
fadingpara (8,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Flat2;%************************** Głównej części pętli ******************** ******nloop = 1000% Liczba pętli symulacjiNOE = 0;% ilości danych o błędzie
skinienie = 0;% Liczba przesyłanych danych
EOP = 0;% Liczba błędów pakietu
nop = 0;% Liczba przekazywanych pakietów%************************** Nadajnik ********************** *******
dla III = 1: nloopseldata = rand (1, pkt II * * ml)> 0,5;% DC = 0paradata = zmienią (seldata, para, ND * ml); wielkość% (51 * ND * ml)%-------------- Ml modulacji ----------------[ich, qch] = qpskmod (paradata, para, nd, ml);
kmod = 1/sqrt (2);
ich = ich .* kmod;
qch = qch .* kmod;Danych CE% generacji
kndata = zeros (1, fftlen);
kndata0 = 2 .* (rand (1,52)> 0,5) -1;
kndata (2:27) = kndata0 (1:26);
kndata (39:64) = kndata0 (27:52);
ceich = kndata;% CE: BPSK
ceqch = zeros (1,64);%------------- Mapowanie danych (DC = 0) -----------[ICH1, qch1] = crmapping (ich, qch, fftlen, nd);ICH2 = [ceich.ICH1];% I-kanał transmisji danych
qch2 = [ceqch.qch1];% Q-kanał transmisji danych%------------------- Ifft -------------------x = ICH2 qch2 .* I;
y = ifft (x);
ICH3 = real ;
qch3 = imag ;%---------- Gurad przedział wstawiania ---------fftlen2 = fftlen gilen;
[ICH4, qch4] = giins (ICH3, qch3, fftlen, gilen, nd 1);%---------- Tłumienie Obliczanie ----------
spow = suma (ich4. ^ 2 qch4. ^ 2) / nd./52;
kontaktów = 0.5 * spow * sr / br * 10. ^ (-ebn0/10);
kontaktów = sqrt (kontaktów);%********************** Kanał Fading ************************* *****
% Jeśli chciałbyś do symulacji wyników w zaniku, usuń "*"
% od czterech sentenses
[ifade, qfade, rampa, rcos, rsin] = sefade (ICH4, qch4, ITAÚ, dlvl1, Th1, N0, itnd1, now1, długość (ICH4), TSTP, fd, mieszkanie);
itnd1 = itnd1 itnd0;% Updata Fading counter
ICH4 = ifade;
qch4 = qfade;%%% Ingerencji Ponadto fala
Zakłóceń%
[iintw, qintw] = interwave (ci, spow, ML2, długość (ICH4), TSTP, fadingpara);
itnd2 = itnd2 itnd02;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
ICH4 = ICH4 iintw;
qch4 = qch4 qintw;%*************************** Receiver ********************* ********
%--------------- Ponadto AWGN ---------------
[ICH5, qch5] = Grzebień (ICH4, qch4, do kontaktów);%---- Perfect Fading odszkodowania za jedną ścieżkę Fading ----
% Jeśli chcesz, aby symulować wydajność w doskonałej odszkodowanie, należy usunąć "*"
% od czterech sentenses
% ifade2 = 1./ramp .* (rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% qfade2 = 1./ramp .* (-rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% ICH5 = ifade2;
% qch5 = qfade2;%----------- Guard Interval usunięcia ----------[ICH6, qch6] = girem (ICH5, qch5, fftlen2, gilen, nd 1);%------------------ FFT --------------------RX = ICH6 qch6 .* I;
ry = fft (RX);
ICH7 = real (ry);
qch7 = imag (ry);%-------------- Fading odszkodowania symbolem CE --------------
%
% Jeśli chciałbyś do symulacji wyników w CE na odszkodowanie, należy usunąć "*"
% w tym obszarze
%Przygotowanie% znane dane CE
ce = 1;
ice0 = ICH2 , CE);
qce0 = qch2 , CE);% Przy danych CE z otrzymanych danych
ice1 = ICH7 , CE);
qce1 = qch7 , CE);% Obliczenia odwrotnej rotacji
iv = real ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));
qv = imag ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));Macierz% w odwrotnej rotacji
ieqv1 = [IV IV IV IV IV IV IV];
qeqv1 = [QV QV QV QV QV QV QV];Rotacji odwróć%
icompen = real ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
qcompen = imag ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
ICH7 = icompen;
qch7 = qcompen;%---------- Usunięcie symbolu CE ----------------ICH8 = ICH7 , knd 1: nd 1);
qch8 = qch7 , knd 1: nd 1);%---------- DC i usuwanie danych pilotażowych --------[ICH9, qch9] = crdemapping (ICH8, qch8, fftlen, nd);%----------------- Demoduration --------------ICH10 = ich9./kmod;
qch10 = qch9./kmod;
[demodata] = qpskdemod (ICH10, qch10, para, nd, ml);%-------------- Obliczenia błędu ----------demodata1 = zmienią (demodata, 1, pkt II * * ml);
noe2 = sum (abs (demodata1-seldata));
NOD2 = długość (seldata);% Obliczenia PER
jeśli noe2 ~ = 0
EOP = EOP 1;
w przeciwnym razie
EOP = EOP;
koniec
EOP;
nop nop = 1;% Obliczenie BER
NOE = noe noe2;
skinienie głową = NOD2;printf ( "% d \ t% e \ t% d \ n", III, noe2/nod2, EOP);
na = EOP / nop;
BER = noe / skinienie;
semilogy (ci, BER ,'-*');
legend ( 'ber wyników');
plot ( "SNR ');
ylabel ( 'ber');
koniec%********************** Wyniku Wyjście ************************* **printf ( "% f \ t% e \ t% e \ t% d \ t% d \ n", ci, BER, na, nloop, fd);fid = fopen ( "BERofdmci.dat ',' ');
fprintf (fid, '% f \ t% e \ t% e \ t% d \ t% d \ n ", ci, BER, na, nloop, fd);
fclose (fid);%******************** Końcu pliku ************************** *
Jestem smulating OFDM w programie Matlab
ale w tym wymienione i kod nie jestem w stanie sporządzić wykres między ci i BER (tj. SNR n bitów wskaźnik błędu tylko jeden punkt jest wyświetlany.
plz ma wyglądać
i pomóc
gdzie i poszło nie tak plz prawidłowe
dzięki
Dhruva
Symulacja efektu% z interfarence hałasu
%
%
% CE danych GI GI GI danych ... (6symbols danych)
%%********************** Część przygotowań ************************* **pkt = 52;% liczba równoległych kanałów do przekazywania (punkty)
fftlen = 64;% FFT length
noc = 53;% liczby przewoźników
nd = 6;% Liczba symbol OFDM informacji na jednej pętli
knd = 1;% liczby znanych estymacji kanału (CE) symbol OFDM
ml = 2;% poziomu modulacji QPSK
sr = 250000% Symbol Rate OFDM (250 ksyombol / s)
br = sr .* ml; Bit rate% na przewoźnika
gilen = 16;% Długość odcinka kontrolne (punkty)
ebn0 = 1000; Eb/N0%%---------------------- Fading inicjalizacji ----------------------TSTP = 1/sr / (fftlen gilen);% Czas rezolucji
ITAÚ = [0];% Przyjazd czasu dla każdego multipath znormalizowany przez TSTP
dlvl1 = [0];% średniej mocy dla każdego multipath znormalizowana poprzez bezpośrednie fali.
n0 = [6];% Liczba fal wygenerować Fading N0 (1), N0 (2)
Th1 = [0,0];% początkowej fazie opóźniona fala
itnd1 = [1000];% ustalonego na blaknięcie counter
now1 = 1;% Liczba DirectWave Liczba opóźniona fala
fd = 150;% maksymalnej częstotliwości Dopplera
mieszkania = 0;% mieszkanie czy też nie (zob. ofdm_fading.m)
itnd0 = ND * (fftlen gilen) * 10;% Liczba Fading Licznik pominąć%----------------- Inicjalizacji Zakłócenia --------------------ci = 10;% C / I ratio
ML2 = 2;% modulacji poziomuitau2 = [0];
dlvl2 = [0];
N02 = [6];
Th2 = [0,0];
itnd2 = [10000 floor (rand (1) * 10) * 1000];
now2 = 1;
FD2 = fd;
Flat2 = 0;
itnd02 = ND * (fftlen gilen) * 300;% Liczba Fading Licznik pominąćSklep%% wszystkich parametrów w jednej matrycy "fadingpara"fadingpara = zeros (8, długość (itau2));
fadingpara (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itau2;
fadingpara (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= dlvl2;
fadingpara (3,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= n02;
fadingpara (4,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Th2;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
fadingpara (6,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= now2;
fadingpara (7,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= FD2;
fadingpara (8,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Flat2;%************************** Głównej części pętli ******************** ******nloop = 1000% Liczba pętli symulacjiNOE = 0;% ilości danych o błędzie
skinienie = 0;% Liczba przesyłanych danych
EOP = 0;% Liczba błędów pakietu
nop = 0;% Liczba przekazywanych pakietów%************************** Nadajnik ********************** *******
dla III = 1: nloopseldata = rand (1, pkt II * * ml)> 0,5;% DC = 0paradata = zmienią (seldata, para, ND * ml); wielkość% (51 * ND * ml)%-------------- Ml modulacji ----------------[ich, qch] = qpskmod (paradata, para, nd, ml);
kmod = 1/sqrt (2);
ich = ich .* kmod;
qch = qch .* kmod;Danych CE% generacji
kndata = zeros (1, fftlen);
kndata0 = 2 .* (rand (1,52)> 0,5) -1;
kndata (2:27) = kndata0 (1:26);
kndata (39:64) = kndata0 (27:52);
ceich = kndata;% CE: BPSK
ceqch = zeros (1,64);%------------- Mapowanie danych (DC = 0) -----------[ICH1, qch1] = crmapping (ich, qch, fftlen, nd);ICH2 = [ceich.ICH1];% I-kanał transmisji danych
qch2 = [ceqch.qch1];% Q-kanał transmisji danych%------------------- Ifft -------------------x = ICH2 qch2 .* I;
y = ifft (x);
ICH3 = real ;
qch3 = imag ;%---------- Gurad przedział wstawiania ---------fftlen2 = fftlen gilen;
[ICH4, qch4] = giins (ICH3, qch3, fftlen, gilen, nd 1);%---------- Tłumienie Obliczanie ----------
spow = suma (ich4. ^ 2 qch4. ^ 2) / nd./52;
kontaktów = 0.5 * spow * sr / br * 10. ^ (-ebn0/10);
kontaktów = sqrt (kontaktów);%********************** Kanał Fading ************************* *****
% Jeśli chciałbyś do symulacji wyników w zaniku, usuń "*"
% od czterech sentenses
[ifade, qfade, rampa, rcos, rsin] = sefade (ICH4, qch4, ITAÚ, dlvl1, Th1, N0, itnd1, now1, długość (ICH4), TSTP, fd, mieszkanie);
itnd1 = itnd1 itnd0;% Updata Fading counter
ICH4 = ifade;
qch4 = qfade;%%% Ingerencji Ponadto fala
Zakłóceń%
[iintw, qintw] = interwave (ci, spow, ML2, długość (ICH4), TSTP, fadingpara);
itnd2 = itnd2 itnd02;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
ICH4 = ICH4 iintw;
qch4 = qch4 qintw;%*************************** Receiver ********************* ********
%--------------- Ponadto AWGN ---------------
[ICH5, qch5] = Grzebień (ICH4, qch4, do kontaktów);%---- Perfect Fading odszkodowania za jedną ścieżkę Fading ----
% Jeśli chcesz, aby symulować wydajność w doskonałej odszkodowanie, należy usunąć "*"
% od czterech sentenses
% ifade2 = 1./ramp .* (rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% qfade2 = 1./ramp .* (-rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% ICH5 = ifade2;
% qch5 = qfade2;%----------- Guard Interval usunięcia ----------[ICH6, qch6] = girem (ICH5, qch5, fftlen2, gilen, nd 1);%------------------ FFT --------------------RX = ICH6 qch6 .* I;
ry = fft (RX);
ICH7 = real (ry);
qch7 = imag (ry);%-------------- Fading odszkodowania symbolem CE --------------
%
% Jeśli chciałbyś do symulacji wyników w CE na odszkodowanie, należy usunąć "*"
% w tym obszarze
%Przygotowanie% znane dane CE
ce = 1;
ice0 = ICH2 , CE);
qce0 = qch2 , CE);% Przy danych CE z otrzymanych danych
ice1 = ICH7 , CE);
qce1 = qch7 , CE);% Obliczenia odwrotnej rotacji
iv = real ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));
qv = imag ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));Macierz% w odwrotnej rotacji
ieqv1 = [IV IV IV IV IV IV IV];
qeqv1 = [QV QV QV QV QV QV QV];Rotacji odwróć%
icompen = real ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
qcompen = imag ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
ICH7 = icompen;
qch7 = qcompen;%---------- Usunięcie symbolu CE ----------------ICH8 = ICH7 , knd 1: nd 1);
qch8 = qch7 , knd 1: nd 1);%---------- DC i usuwanie danych pilotażowych --------[ICH9, qch9] = crdemapping (ICH8, qch8, fftlen, nd);%----------------- Demoduration --------------ICH10 = ich9./kmod;
qch10 = qch9./kmod;
[demodata] = qpskdemod (ICH10, qch10, para, nd, ml);%-------------- Obliczenia błędu ----------demodata1 = zmienią (demodata, 1, pkt II * * ml);
noe2 = sum (abs (demodata1-seldata));
NOD2 = długość (seldata);% Obliczenia PER
jeśli noe2 ~ = 0
EOP = EOP 1;
w przeciwnym razie
EOP = EOP;
koniec
EOP;
nop nop = 1;% Obliczenie BER
NOE = noe noe2;
skinienie głową = NOD2;printf ( "% d \ t% e \ t% d \ n", III, noe2/nod2, EOP);
na = EOP / nop;
BER = noe / skinienie;
semilogy (ci, BER ,'-*');
legend ( 'ber wyników');
plot ( "SNR ');
ylabel ( 'ber');
koniec%********************** Wyniku Wyjście ************************* **printf ( "% f \ t% e \ t% e \ t% d \ t% d \ n", ci, BER, na, nloop, fd);fid = fopen ( "BERofdmci.dat ',' ');
fprintf (fid, '% f \ t% e \ t% e \ t% d \ t% d \ n ", ci, BER, na, nloop, fd);
fclose (fid);%******************** Końcu pliku ************************** *
Symulacja efektu% z interfarence hałasu
%
%
% CE danych GI GI GI danych ... (6symbols danych)
%%********************** Część przygotowań ************************* **pkt = 52;% liczba równoległych kanałów do przekazywania (punkty)
fftlen = 64;% FFT length
noc = 53;% liczby przewoźników
nd = 6;% Liczba symbol OFDM informacji na jednej pętli
knd = 1;% liczby znanych estymacji kanału (CE) symbol OFDM
ml = 2;% poziomu modulacji QPSK
sr = 250000% Symbol Rate OFDM (250 ksyombol / s)
br = sr .* ml; Bit rate% na przewoźnika
gilen = 16;% Długość odcinka kontrolne (punkty)
ebn0 = 1000; Eb/N0%%---------------------- Fading inicjalizacji ----------------------TSTP = 1/sr / (fftlen gilen);% Czas rezolucji
ITAÚ = [0];% Przyjazd czasu dla każdego multipath znormalizowany przez TSTP
dlvl1 = [0];% średniej mocy dla każdego multipath znormalizowana poprzez bezpośrednie fali.
n0 = [6];% Liczba fal wygenerować Fading N0 (1), N0 (2)
Th1 = [0,0];% początkowej fazie opóźniona fala
itnd1 = [1000];% ustalonego na blaknięcie counter
now1 = 1;% Liczba DirectWave Liczba opóźniona fala
fd = 150;% maksymalnej częstotliwości Dopplera
mieszkania = 0;% mieszkanie czy też nie (zob. ofdm_fading.m)
itnd0 = ND * (fftlen gilen) * 10;% Liczba Fading Licznik pominąć%----------------- Inicjalizacji Zakłócenia --------------------ci = 10;% C / I ratio
ML2 = 2;% modulacji poziomuitau2 = [0];
dlvl2 = [0];
N02 = [6];
Th2 = [0,0];
itnd2 = [10000 floor (rand (1) * 10) * 1000];
now2 = 1;
FD2 = fd;
Flat2 = 0;
itnd02 = ND * (fftlen gilen) * 300;% Liczba Fading Licznik pominąćSklep%% wszystkich parametrów w jednej matrycy "fadingpara"fadingpara = zeros (8, długość (itau2));
fadingpara (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itau2;
fadingpara (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= dlvl2;
fadingpara (3,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= n02;
fadingpara (4,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Th2;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
fadingpara (6,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= now2;
fadingpara (7,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= FD2;
fadingpara (8,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= Flat2;%************************** Głównej części pętli ******************** ******nloop = 1000% Liczba pętli symulacjiNOE = 0;% ilości danych o błędzie
skinienie = 0;% Liczba przesyłanych danych
EOP = 0;% Liczba błędów pakietu
nop = 0;% Liczba przekazywanych pakietów%************************** Nadajnik ********************** *******
dla III = 1: nloopseldata = rand (1, pkt II * * ml)> 0,5;% DC = 0paradata = zmienią (seldata, para, ND * ml); wielkość% (51 * ND * ml)%-------------- Ml modulacji ----------------[ich, qch] = qpskmod (paradata, para, nd, ml);
kmod = 1/sqrt (2);
ich = ich .* kmod;
qch = qch .* kmod;Danych CE% generacji
kndata = zeros (1, fftlen);
kndata0 = 2 .* (rand (1,52)> 0,5) -1;
kndata (2:27) = kndata0 (1:26);
kndata (39:64) = kndata0 (27:52);
ceich = kndata;% CE: BPSK
ceqch = zeros (1,64);%------------- Mapowanie danych (DC = 0) -----------[ICH1, qch1] = crmapping (ich, qch, fftlen, nd);ICH2 = [ceich.ICH1];% I-kanał transmisji danych
qch2 = [ceqch.qch1];% Q-kanał transmisji danych%------------------- Ifft -------------------x = ICH2 qch2 .* I;
y = ifft (x);
ICH3 = real ;
qch3 = imag ;%---------- Gurad przedział wstawiania ---------fftlen2 = fftlen gilen;
[ICH4, qch4] = giins (ICH3, qch3, fftlen, gilen, nd 1);%---------- Tłumienie Obliczanie ----------
spow = suma (ich4. ^ 2 qch4. ^ 2) / nd./52;
kontaktów = 0.5 * spow * sr / br * 10. ^ (-ebn0/10);
kontaktów = sqrt (kontaktów);%********************** Kanał Fading ************************* *****
% Jeśli chciałbyś do symulacji wyników w zaniku, usuń "*"
% od czterech sentenses
[ifade, qfade, rampa, rcos, rsin] = sefade (ICH4, qch4, ITAÚ, dlvl1, Th1, N0, itnd1, now1, długość (ICH4), TSTP, fd, mieszkanie);
itnd1 = itnd1 itnd0;% Updata Fading counter
ICH4 = ifade;
qch4 = qfade;%%% Ingerencji Ponadto fala
Zakłóceń%
[iintw, qintw] = interwave (ci, spow, ML2, długość (ICH4), TSTP, fadingpara);
itnd2 = itnd2 itnd02;
fadingpara (5,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
= itnd2;
ICH4 = ICH4 iintw;
qch4 = qch4 qintw;%*************************** Receiver ********************* ********
%--------------- Ponadto AWGN ---------------
[ICH5, qch5] = Grzebień (ICH4, qch4, do kontaktów);%---- Perfect Fading odszkodowania za jedną ścieżkę Fading ----
% Jeśli chcesz, aby symulować wydajność w doskonałej odszkodowanie, należy usunąć "*"
% od czterech sentenses
% ifade2 = 1./ramp .* (rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% qfade2 = 1./ramp .* (-rsin (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* ICH5 rcos (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />
.* qch5);
% ICH5 = ifade2;
% qch5 = qfade2;%----------- Guard Interval usunięcia ----------[ICH6, qch6] = girem (ICH5, qch5, fftlen2, gilen, nd 1);%------------------ FFT --------------------RX = ICH6 qch6 .* I;
ry = fft (RX);
ICH7 = real (ry);
qch7 = imag (ry);%-------------- Fading odszkodowania symbolem CE --------------
%
% Jeśli chciałbyś do symulacji wyników w CE na odszkodowanie, należy usunąć "*"
% w tym obszarze
%Przygotowanie% znane dane CE
ce = 1;
ice0 = ICH2 , CE);
qce0 = qch2 , CE);% Przy danych CE z otrzymanych danych
ice1 = ICH7 , CE);
qce1 = qch7 , CE);% Obliczenia odwrotnej rotacji
iv = real ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));
qv = imag ((1. / (ice1. ^ 2 qce1. ^ 2 )).*( ice0 I. * qce0) .* (ice1-i. * qce1));Macierz% w odwrotnej rotacji
ieqv1 = [IV IV IV IV IV IV IV];
qeqv1 = [QV QV QV QV QV QV QV];Rotacji odwróć%
icompen = real ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
qcompen = imag ((ICH7 I. * qch7) .* (ieqv1 I. * qeqv1));
ICH7 = icompen;
qch7 = qcompen;%---------- Usunięcie symbolu CE ----------------ICH8 = ICH7 , knd 1: nd 1);
qch8 = qch7 , knd 1: nd 1);%---------- DC i usuwanie danych pilotażowych --------[ICH9, qch9] = crdemapping (ICH8, qch8, fftlen, nd);%----------------- Demoduration --------------ICH10 = ich9./kmod;
qch10 = qch9./kmod;
[demodata] = qpskdemod (ICH10, qch10, para, nd, ml);%-------------- Obliczenia błędu ----------demodata1 = zmienią (demodata, 1, pkt II * * ml);
noe2 = sum (abs (demodata1-seldata));
NOD2 = długość (seldata);% Obliczenia PER
jeśli noe2 ~ = 0
EOP = EOP 1;
w przeciwnym razie
EOP = EOP;
koniec
EOP;
nop nop = 1;% Obliczenie BER
NOE = noe noe2;
skinienie głową = NOD2;printf ( "% d \ t% e \ t% d \ n", III, noe2/nod2, EOP);
na = EOP / nop;
BER = noe / skinienie;
semilogy (ci, BER ,'-*');
legend ( 'ber wyników');
plot ( "SNR ');
ylabel ( 'ber');
koniec%********************** Wyniku Wyjście ************************* **printf ( "% f \ t% e \ t% e \ t% d \ t% d \ n", ci, BER, na, nloop, fd);fid = fopen ( "BERofdmci.dat ',' ');
fprintf (fid, '% f \ t% e \ t% e \ t% d \ t% d \ n ", ci, BER, na, nloop, fd);
fclose (fid);%******************** Końcu pliku ************************** *