związane Matlab

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 (y);

qch3 = imag (y);%---------- 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 (y);

qch3 = imag (y);%---------- 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 ************************** *

 

Welcome to EDABoard.com

Sponsor

Back
Top