A
adi_sharma84
Guest
Hi All,
Ik probeer een SC-Frequentie domein LMS equalizer simuleren.
Nu omdat het SC de opsporing moet worden in de tijd domein, hoewel de
kanaal schatting is in frequentie domein, zodat ik de volgende stappen
1) Vermenigvuldig gegevens -> data_f (in frequentie domein) met gewichten in frequentie
domein
2) Zet de gegevens in de tijd domein data_t door ifft en doorgeven via
detector.
3) berekenen de fout (detector - data_t)
4) zetten de fout terug in de frequentie-domein (door FFT of fout) -> err_f
5) update weegt door het gewicht = gewicht Mu * (data_f * conj (err_f)) waar Mu is
stapgrootte
6) nu nieuwe gewicht te vermenigvuldigen met de volgende reeks van gegevens en herhaal het proces
Doe ik iets verkeerd als fout nooit afneemt ongeacht wat ik doe
en het verhoogt snel met elkaar lopen.
Elke vorm van hulp wordt zeer gewaardeerd, omdat dit maakt me gek.
Groeten
Aditya
<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />Zie het monster matlab onderstaande code
________________________________________
sluit alle
Alles wissen
CLC
z = nullen (1256);
zd = 0;
x1 = [];
z3 = [];
pak_loc = [];
pak_loc_1 = [];
pak_dis = [];
map_bins = [];
%%%%%%%%%%%%%%% USR1 %%%%%%%%%%%%%%%%%%%%%%%%%%%
voor k = 1:50
%%%%%%%%%%%%%%%%% Paking 32 bakken bakken rechts links 32% center dc
nul %%%%%%%%%
x = (floor (2 * rand (1,64)) -. 5) / (.5) j * (vloer (2 * rand (1,64)) -. 5) / (.5);
x1 = [x x1];
voor n = 97:128
z = x (n-96);
eindigen
voor n = 130:161
z = x (n-97);
eindigen
t = fftshift (z);
map_bins = [map_bins z];
dtd = FFT (t, 256);
%%%%%%%%%%%%%% subcarrier mapping %%%%%%%%%%%%%
subm_d = [];
subm_l = [];
subm_l = [dtd];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% 256 punt ifft van gelokaliseerde en
disterbuted %%%%%%%%%%%%%%%%%%%%%
iff_out_l = ifft (subm_l, 256);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% cyclische prefix %%%%%%%%%
out_l_s = [];
out_l_s = [iff_out_l (193:256) iff_out_l]; %%%%%%%%% een OFDM symbool met
cyclische prefix
%%%%%%%%%%%%%%%%% 50 symbool pakket %%%%%%%%%%%%% 1 symbool is 320 monsters
lang
pak_loc_1 = [pak_loc_1 out_l_s];
eindigen
%%%%%%%%%%%%%%%%%%%% preambule voor USR1 %%%%%%%%%%%%%%%%%%%%%%%%%%%
a = 1 j;
b =- 1 j;
c =- 1-j;
d = 1-j;
p_all = [ddcaddbdddacaacaccd b. ..
ddcaddbdddacaacaccd b. ..
ddcaddbdddacaacaccd b. ..
aadbaacaaabdbbdbdda c. ..
ccbdccacccdbdbbdbbc a. ..
0 ...
cabbcaaacadbdbbbbdc c. ..
bdaabdddbdcccaaaacb b. ..
acddacccacbbbddddba a. ..
cabbcaaacadddbbbbdc c. ..
dbccdbbbdbaaaccccadd];
ff_1 = nullen (1256);
ff_2 = nullen (1256);
D2 = p_all (1:2:201);
d1 = p_all (1:4:201);
ff_2 (129 (-100:2:100)) = sqrt (2) * D2 ;%%%%% lange preambule
usr1_pre = FFT (ff_2, 256 );%%%%%%%%%%%%% FFT van USR1
OT1 = [usr1_pre];
i_ot1 = ifft (OT1, 256);
c_iot1 = [i_ot1 (193:256) i_ot1];
preamble_cp_usr1 = c_iot1; %%%%%%% lange preambule
pak_usr1_preamble = [preamble_cp_usr1 pak_loc_1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CI1 = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 * j]; %%%%%%%%%% kanaal
fil_ch_out = filter (CI1, 1, pak_usr1_preamble);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%
%%%%%%%%%%%% kanaal schatting
cp_long_pre = fil_ch_out (1:320);
long_pre = cp_long_pre (65: end);
ff_long_pre = FFT (long_pre, 256);
long_usr1 = ff_long_pre;
ratio_usr1 = long_usr1./usr1_pre;%%%% ratio van recived considerans van de
bekend preambule
ratio_usr1 = ratio_usr1 (1:2: end);
%%%% interpolatie
inter_r_us1 = [];
voor n = 1: length (ratio_usr1) -1
inter_r_us1 = [inter_r_us1 ratio_usr1
(ratio_usr1 ratio_usr1 (n 1)) / 2];
eindigen
inter_r_us1 = [inter_r_us1 ratio_usr1 (128) ratio_usr1 (128)];
ch1_fr = FFT (CI1, 256);
figuur (1)
wacht even
plot (abs (log (inter_r_us1)), 'linewidth', 4)
plot (abs (log (ch1_fr)), 'xg')
HOLD uit
titel ( 'kanaal in het groen aan de geraamde kanaal in blauw')
as ([1 256 -2 2])
%%%%%%%%%%%%%% lms_equil %%%%%%%%%%%%%%%%
L8 = 320;
data = fil_ch_out (321: end);
w = ones (1256) ./inter_r_us1;%%%% w = geraamde kanaal
errtt = [];
voor n = 1:50
DAT = data ((n-1) * l8 1: n * l
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />
;
dat1 = Dat (65: end);
dat_f = FFT (dat1, 256);
eq_dat_f = dat_f .* w;
dat_t = ifft (eq_dat_f, 256);
figuur (2)
plot (dat_t, 'x')
%%%%%%%%%%%%%%% detector
DETC = [];
voor n = 1:256
dc_tmp = dat_t (n );%%%%%%%%%%%%% input detector
sinng = teken (real (dc_tmp));
indien sinng == 1
als real (dc_tmp) <0.5
rl_tmp = 0;
anders
rl_tmp = 1;
eindigen
anders
als real (dc_tmp)> -0,5
rl_tmp = 0;
anders
rl_tmp =- 1;
eindigen
eindigen
sinng = teken (imag (dc_tmp));
indien sinng == 1
indien imag (dc_tmp) <0.5
ig_tmp = 0;
anders
ig_tmp = 1;
eindigen
anders
indien imag (dc_tmp)> -0,5
ig_tmp = 0;
anders
ig_tmp =- 1;
eindigen
eindigen
tmp_d = rl_tmp i * ig_tmp;
DETC = [DETC tmp_d]; %%%%%%%%%%%%%%%% uitgang van de detector
eindigen
figuur (3)
plot (DETC, 'x')
titel ( 'detector plot')
as ([-2 2 -2 2])
err_t = DETC-dat_t;%%%% fout van de detector tot de gegevens in de tijd domein
err_f = FFT (err_t, 256 );%%%%% fout terug in freq domein
errtt = [errtt err_f];
figuur (4)
subplot (2,1,1)
plot (abs (err_t));
subplot (2,1,2)
plot (abs (err_f));
w_up = (dat_f. * conj (err_f));%%% nieuwe gewichten in freq domein
W = W 0,01 * (w_up );%%%% gewichten update lms algrothim
eindigen
figuur (5)
plot (abs (errtt))
___________________________________
Ik probeer een SC-Frequentie domein LMS equalizer simuleren.
Nu omdat het SC de opsporing moet worden in de tijd domein, hoewel de
kanaal schatting is in frequentie domein, zodat ik de volgende stappen
1) Vermenigvuldig gegevens -> data_f (in frequentie domein) met gewichten in frequentie
domein
2) Zet de gegevens in de tijd domein data_t door ifft en doorgeven via
detector.
3) berekenen de fout (detector - data_t)
4) zetten de fout terug in de frequentie-domein (door FFT of fout) -> err_f
5) update weegt door het gewicht = gewicht Mu * (data_f * conj (err_f)) waar Mu is
stapgrootte
6) nu nieuwe gewicht te vermenigvuldigen met de volgende reeks van gegevens en herhaal het proces
Doe ik iets verkeerd als fout nooit afneemt ongeacht wat ik doe
en het verhoogt snel met elkaar lopen.
Elke vorm van hulp wordt zeer gewaardeerd, omdat dit maakt me gek.
Groeten
Aditya
<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />Zie het monster matlab onderstaande code
________________________________________
sluit alle
Alles wissen
CLC
z = nullen (1256);
zd = 0;
x1 = [];
z3 = [];
pak_loc = [];
pak_loc_1 = [];
pak_dis = [];
map_bins = [];
%%%%%%%%%%%%%%% USR1 %%%%%%%%%%%%%%%%%%%%%%%%%%%
voor k = 1:50
%%%%%%%%%%%%%%%%% Paking 32 bakken bakken rechts links 32% center dc
nul %%%%%%%%%
x = (floor (2 * rand (1,64)) -. 5) / (.5) j * (vloer (2 * rand (1,64)) -. 5) / (.5);
x1 = [x x1];
voor n = 97:128
z = x (n-96);
eindigen
voor n = 130:161
z = x (n-97);
eindigen
t = fftshift (z);
map_bins = [map_bins z];
dtd = FFT (t, 256);
%%%%%%%%%%%%%% subcarrier mapping %%%%%%%%%%%%%
subm_d = [];
subm_l = [];
subm_l = [dtd];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% 256 punt ifft van gelokaliseerde en
disterbuted %%%%%%%%%%%%%%%%%%%%%
iff_out_l = ifft (subm_l, 256);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% cyclische prefix %%%%%%%%%
out_l_s = [];
out_l_s = [iff_out_l (193:256) iff_out_l]; %%%%%%%%% een OFDM symbool met
cyclische prefix
%%%%%%%%%%%%%%%%% 50 symbool pakket %%%%%%%%%%%%% 1 symbool is 320 monsters
lang
pak_loc_1 = [pak_loc_1 out_l_s];
eindigen
%%%%%%%%%%%%%%%%%%%% preambule voor USR1 %%%%%%%%%%%%%%%%%%%%%%%%%%%
a = 1 j;
b =- 1 j;
c =- 1-j;
d = 1-j;
p_all = [ddcaddbdddacaacaccd b. ..
ddcaddbdddacaacaccd b. ..
ddcaddbdddacaacaccd b. ..
aadbaacaaabdbbdbdda c. ..
ccbdccacccdbdbbdbbc a. ..
0 ...
cabbcaaacadbdbbbbdc c. ..
bdaabdddbdcccaaaacb b. ..
acddacccacbbbddddba a. ..
cabbcaaacadddbbbbdc c. ..
dbccdbbbdbaaaccccadd];
ff_1 = nullen (1256);
ff_2 = nullen (1256);
D2 = p_all (1:2:201);
d1 = p_all (1:4:201);
ff_2 (129 (-100:2:100)) = sqrt (2) * D2 ;%%%%% lange preambule
usr1_pre = FFT (ff_2, 256 );%%%%%%%%%%%%% FFT van USR1
OT1 = [usr1_pre];
i_ot1 = ifft (OT1, 256);
c_iot1 = [i_ot1 (193:256) i_ot1];
preamble_cp_usr1 = c_iot1; %%%%%%% lange preambule
pak_usr1_preamble = [preamble_cp_usr1 pak_loc_1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CI1 = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 * j]; %%%%%%%%%% kanaal
fil_ch_out = filter (CI1, 1, pak_usr1_preamble);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%
%%%%%%%%%%%% kanaal schatting
cp_long_pre = fil_ch_out (1:320);
long_pre = cp_long_pre (65: end);
ff_long_pre = FFT (long_pre, 256);
long_usr1 = ff_long_pre;
ratio_usr1 = long_usr1./usr1_pre;%%%% ratio van recived considerans van de
bekend preambule
ratio_usr1 = ratio_usr1 (1:2: end);
%%%% interpolatie
inter_r_us1 = [];
voor n = 1: length (ratio_usr1) -1
inter_r_us1 = [inter_r_us1 ratio_usr1
(ratio_usr1 ratio_usr1 (n 1)) / 2];
eindigen
inter_r_us1 = [inter_r_us1 ratio_usr1 (128) ratio_usr1 (128)];
ch1_fr = FFT (CI1, 256);
figuur (1)
wacht even
plot (abs (log (inter_r_us1)), 'linewidth', 4)
plot (abs (log (ch1_fr)), 'xg')
HOLD uit
titel ( 'kanaal in het groen aan de geraamde kanaal in blauw')
as ([1 256 -2 2])
%%%%%%%%%%%%%% lms_equil %%%%%%%%%%%%%%%%
L8 = 320;
data = fil_ch_out (321: end);
w = ones (1256) ./inter_r_us1;%%%% w = geraamde kanaal
errtt = [];
voor n = 1:50
DAT = data ((n-1) * l8 1: n * l
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />
;
dat1 = Dat (65: end);
dat_f = FFT (dat1, 256);
eq_dat_f = dat_f .* w;
dat_t = ifft (eq_dat_f, 256);
figuur (2)
plot (dat_t, 'x')
%%%%%%%%%%%%%%% detector
DETC = [];
voor n = 1:256
dc_tmp = dat_t (n );%%%%%%%%%%%%% input detector
sinng = teken (real (dc_tmp));
indien sinng == 1
als real (dc_tmp) <0.5
rl_tmp = 0;
anders
rl_tmp = 1;
eindigen
anders
als real (dc_tmp)> -0,5
rl_tmp = 0;
anders
rl_tmp =- 1;
eindigen
eindigen
sinng = teken (imag (dc_tmp));
indien sinng == 1
indien imag (dc_tmp) <0.5
ig_tmp = 0;
anders
ig_tmp = 1;
eindigen
anders
indien imag (dc_tmp)> -0,5
ig_tmp = 0;
anders
ig_tmp =- 1;
eindigen
eindigen
tmp_d = rl_tmp i * ig_tmp;
DETC = [DETC tmp_d]; %%%%%%%%%%%%%%%% uitgang van de detector
eindigen
figuur (3)
plot (DETC, 'x')
titel ( 'detector plot')
as ([-2 2 -2 2])
err_t = DETC-dat_t;%%%% fout van de detector tot de gegevens in de tijd domein
err_f = FFT (err_t, 256 );%%%%% fout terug in freq domein
errtt = [errtt err_f];
figuur (4)
subplot (2,1,1)
plot (abs (err_t));
subplot (2,1,2)
plot (abs (err_f));
w_up = (dat_f. * conj (err_f));%%% nieuwe gewichten in freq domein
W = W 0,01 * (w_up );%%%% gewichten update lms algrothim
eindigen
figuur (5)
plot (abs (errtt))
___________________________________