A
adi_sharma84
Guest
Salut tous,
Je suis en train de simuler un SC-Frequency domain LMS égaliseur.
Maintenant, puisque
c'est la SC de détection doit être dans le temps même si le domaine
channel estimation est en fréquence, afin de suivre ces étapes i
1) Multiplier les données -> data_f (en fréquence) avec le poids de la fréquence
domaine
2) Convertir les données dans le domaine temporel par data_t IFFT et le transmettre par le biais de
détecteur.
3) calculer l'erreur (détecteur - data_t)
4) la conversion de l'erreur de retour en fréquence (fft ou par erreur) -> err_f
5) mise à jour pèse par des poids = poids Mu * (* data_f conj (err_f)) où Mu est
pas de
6) maintenant multiplier nouveau poids avec la prochaine série de données et de répéter le processus
Ai-je fait quelque chose de mal que l'erreur ne diminue pas, quel que soit i do
et elle augmente rapidement avec chaque terme.
Tout type d'aide est très appréciée en tant que ce fait me rend folle.
Observe
Aditya
<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Pleurer ou très triste" border="0" />S'il vous plaît voir l'exemple de code ci-dessous matlab
________________________________________
fermer tous les
effacer tous les
clc
z = zeros (1.256);
zd = 0;
x1 = [];
z3 = [];
pak_loc = [];
pak_loc_1 = [];
pak_dis = [];
map_bins = [];
%%%%%%%%%%%%%%% USR1 %%%%%%%%%%%%%%%%%%%%%%%%%%%
pour k = 1:50
%%%%%%%%%%%%%%%%% paking 32 bacs de 32 bacs de gauche à droite centre dc%
zéro %%%%%%%%%
x = (floor (2 * rand (1,64)) -. 5) / (.5) j * (floor (2 * rand (1,64)) -. 5) / (.5);
x1 = [x x1];
pour n = 97:128
z
= x (n-96);
fin
pour n = 130:161
z
= x (n-97);
fin
t = fftshift (z);
map_bins = [map_bins z];
dtd = fft (t, 256);
Sous-%%%%%%%%%%%%%% cartographie %%%%%%%%%%%%%
subm_d = [];
subm_l = [];
subm_l = [dtd];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
256 point %%%%%%%%%%% IFFT localisées et
disterbuted %%%%%%%%%%%%%%%%%%%%%
iff_out_l = IFFT (subm_l, 256);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% préfixe cyclique %%%%%%%%%
out_l_s = [];
out_l_s = [iff_out_l (193:256) iff_out_l]; %%%%%%%%% un symbole OFDM
préfixe cyclique
%%%%%%%%%%%%%%%%% 50 symbole 1 sachet %%%%%%%%%%%%% symbole est de 320 échantillons
long
pak_loc_1 = [pak_loc_1 out_l_s];
fin
%%%%%%%%%%%%%%%%%%%% préambule de 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 = zéros (1.256);
ff_2 = zéros (1.256);
d2 = p_all (1:2:201);
d1 = p_all (1:4:201);
ff_2 (129 (-100:2:100)) = sqrt (2) * d2 ;%%%%% long préambule
usr1_pre = fft (ff_2, 256 );%%%%%%%%%%%%% fft de USR1
OT1 = [usr1_pre];
i_ot1 = IFFT (OT1, 256);
c_iot1 = [i_ot1 (193:256) i_ot1];
preamble_cp_usr1 = c_iot1; %%%%%%% long préambule
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]; %%%%%%%%%% chaîne
fil_ch_out = filter (CI1, 1, pak_usr1_preamble);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%
%%%%%%%%%%%% channel estimation
cp_long_pre = fil_ch_out (1:320);
long_pre = cp_long_pre (65: fin);
ff_long_pre = fft (long_pre, 256);
long_usr1 = ff_long_pre;
ratio_usr1 = long_usr1./usr1_pre;%%%% ratio recived du préambule de la
connu préambule
ratio_usr1 = ratio_usr1 (1:2: end);
%%%% interpolation
inter_r_us1 = [];
pour n = 1:
length (ratio_usr1) -1
inter_r_us1 = [inter_r_us1 ratio_usr1
(ratio_usr1
ratio_usr1 (n 1)) / 2];
fin
inter_r_us1 = [inter_r_us1 ratio_usr1 (128) ratio_usr1 (128)];
ch1_fr = fft (CI1, 256);
figure (1)
patienter
plot (abs (log (inter_r_us1)), "raie", 4)
plot (abs (log (ch1_fr)), 'xg')
attendre
titre ( «canal en vert à l'estimation de canal bleu»)
axis ([1 256 -2 2])
%%%%%%%%%%%%%% lms_equil %%%%%%%%%%%%%%%%
l8 = 320;
data = fil_ch_out (321: fin);
w = plus (1.256) ./inter_r_us1;%%%% p = estimé chaîne
errtt = [];
pour n = 1:50
dat de données = ((n-1) * l8 1: n * l
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Cool" border="0" />
;
dat1 dat = (65: fin);
dat_f = fft (dat1, 256);
eq_dat_f = dat_f .* w;
dat_t = IFFT (eq_dat_f, 256);
figure (2)
plot (dat_t, 'x')
%%%%%%%%%%%%%%% détecteur
detc = [];
pour n = 1:256
dc_tmp = dat_t (n );%%%%%%%%%%%%% contribution au détecteur de
sinng signe = (real (dc_tmp));
si sinng == 1
si réel (dc_tmp) <0.5
rl_tmp = 0;
autre
rl_tmp = 1;
fin
autre
si réel (dc_tmp)> -0,5
rl_tmp = 0;
autre
rl_tmp =- 1;
fin
fin
sinng signe = (imag (dc_tmp));
si sinng == 1
si imag (dc_tmp) <0.5
ig_tmp = 0;
autre
ig_tmp = 1;
fin
autre
si imag (dc_tmp)> -0,5
ig_tmp = 0;
autre
ig_tmp =- 1;
fin
fin
tmp_d = rl_tmp i * ig_tmp;
detc = [detc tmp_d]; %%%%%%%%%%%%%%%% sortie de détecteur
fin
figure (3)
plot (detc, 'x')
titre ( «détecteur de terrain»)
axis ([-2 2 -2 2])
err_t = detc-dat_t;%%%% erreur de détecteur de données dans le domaine temporel
err_f = fft (err_t, 256 );%%%%% erreur en freq de domaine
errtt = [errtt err_f];
figure (4)
subplot (2,1,1)
plot (abs (err_t));
subplot (2,1,2)
plot (abs (err_f));
w_up = (* dat_f. conj (err_f));%%% en poids de nouvelles freq domaine
w w = 0.01 * (mise à jour w_up );%%%% poids lms algrothim
fin
figure (5)
plot (abs (errtt))
___________________________________
Je suis en train de simuler un SC-Frequency domain LMS égaliseur.
Maintenant, puisque
c'est la SC de détection doit être dans le temps même si le domaine
channel estimation est en fréquence, afin de suivre ces étapes i
1) Multiplier les données -> data_f (en fréquence) avec le poids de la fréquence
domaine
2) Convertir les données dans le domaine temporel par data_t IFFT et le transmettre par le biais de
détecteur.
3) calculer l'erreur (détecteur - data_t)
4) la conversion de l'erreur de retour en fréquence (fft ou par erreur) -> err_f
5) mise à jour pèse par des poids = poids Mu * (* data_f conj (err_f)) où Mu est
pas de
6) maintenant multiplier nouveau poids avec la prochaine série de données et de répéter le processus
Ai-je fait quelque chose de mal que l'erreur ne diminue pas, quel que soit i do
et elle augmente rapidement avec chaque terme.
Tout type d'aide est très appréciée en tant que ce fait me rend folle.
Observe
Aditya
<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Pleurer ou très triste" border="0" />S'il vous plaît voir l'exemple de code ci-dessous matlab
________________________________________
fermer tous les
effacer tous les
clc
z = zeros (1.256);
zd = 0;
x1 = [];
z3 = [];
pak_loc = [];
pak_loc_1 = [];
pak_dis = [];
map_bins = [];
%%%%%%%%%%%%%%% USR1 %%%%%%%%%%%%%%%%%%%%%%%%%%%
pour k = 1:50
%%%%%%%%%%%%%%%%% paking 32 bacs de 32 bacs de gauche à droite centre dc%
zéro %%%%%%%%%
x = (floor (2 * rand (1,64)) -. 5) / (.5) j * (floor (2 * rand (1,64)) -. 5) / (.5);
x1 = [x x1];
pour n = 97:128
z
fin
pour n = 130:161
z
fin
t = fftshift (z);
map_bins = [map_bins z];
dtd = fft (t, 256);
Sous-%%%%%%%%%%%%%% cartographie %%%%%%%%%%%%%
subm_d = [];
subm_l = [];
subm_l = [dtd];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
256 point %%%%%%%%%%% IFFT localisées et
disterbuted %%%%%%%%%%%%%%%%%%%%%
iff_out_l = IFFT (subm_l, 256);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% préfixe cyclique %%%%%%%%%
out_l_s = [];
out_l_s = [iff_out_l (193:256) iff_out_l]; %%%%%%%%% un symbole OFDM
préfixe cyclique
%%%%%%%%%%%%%%%%% 50 symbole 1 sachet %%%%%%%%%%%%% symbole est de 320 échantillons
long
pak_loc_1 = [pak_loc_1 out_l_s];
fin
%%%%%%%%%%%%%%%%%%%% préambule de 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 = zéros (1.256);
ff_2 = zéros (1.256);
d2 = p_all (1:2:201);
d1 = p_all (1:4:201);
ff_2 (129 (-100:2:100)) = sqrt (2) * d2 ;%%%%% long préambule
usr1_pre = fft (ff_2, 256 );%%%%%%%%%%%%% fft de USR1
OT1 = [usr1_pre];
i_ot1 = IFFT (OT1, 256);
c_iot1 = [i_ot1 (193:256) i_ot1];
preamble_cp_usr1 = c_iot1; %%%%%%% long préambule
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]; %%%%%%%%%% chaîne
fil_ch_out = filter (CI1, 1, pak_usr1_preamble);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%
%%%%%%%%%%%% channel estimation
cp_long_pre = fil_ch_out (1:320);
long_pre = cp_long_pre (65: fin);
ff_long_pre = fft (long_pre, 256);
long_usr1 = ff_long_pre;
ratio_usr1 = long_usr1./usr1_pre;%%%% ratio recived du préambule de la
connu préambule
ratio_usr1 = ratio_usr1 (1:2: end);
%%%% interpolation
inter_r_us1 = [];
pour n = 1:
length (ratio_usr1) -1
inter_r_us1 = [inter_r_us1 ratio_usr1
(ratio_usr1
fin
inter_r_us1 = [inter_r_us1 ratio_usr1 (128) ratio_usr1 (128)];
ch1_fr = fft (CI1, 256);
figure (1)
patienter
plot (abs (log (inter_r_us1)), "raie", 4)
plot (abs (log (ch1_fr)), 'xg')
attendre
titre ( «canal en vert à l'estimation de canal bleu»)
axis ([1 256 -2 2])
%%%%%%%%%%%%%% lms_equil %%%%%%%%%%%%%%%%
l8 = 320;
data = fil_ch_out (321: fin);
w = plus (1.256) ./inter_r_us1;%%%% p = estimé chaîne
errtt = [];
pour n = 1:50
dat de données = ((n-1) * l8 1: n * l
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Cool" border="0" />
;
dat1 dat = (65: fin);
dat_f = fft (dat1, 256);
eq_dat_f = dat_f .* w;
dat_t = IFFT (eq_dat_f, 256);
figure (2)
plot (dat_t, 'x')
%%%%%%%%%%%%%%% détecteur
detc = [];
pour n = 1:256
dc_tmp = dat_t (n );%%%%%%%%%%%%% contribution au détecteur de
sinng signe = (real (dc_tmp));
si sinng == 1
si réel (dc_tmp) <0.5
rl_tmp = 0;
autre
rl_tmp = 1;
fin
autre
si réel (dc_tmp)> -0,5
rl_tmp = 0;
autre
rl_tmp =- 1;
fin
fin
sinng signe = (imag (dc_tmp));
si sinng == 1
si imag (dc_tmp) <0.5
ig_tmp = 0;
autre
ig_tmp = 1;
fin
autre
si imag (dc_tmp)> -0,5
ig_tmp = 0;
autre
ig_tmp =- 1;
fin
fin
tmp_d = rl_tmp i * ig_tmp;
detc = [detc tmp_d]; %%%%%%%%%%%%%%%% sortie de détecteur
fin
figure (3)
plot (detc, 'x')
titre ( «détecteur de terrain»)
axis ([-2 2 -2 2])
err_t = detc-dat_t;%%%% erreur de détecteur de données dans le domaine temporel
err_f = fft (err_t, 256 );%%%%% erreur en freq de domaine
errtt = [errtt err_f];
figure (4)
subplot (2,1,1)
plot (abs (err_t));
subplot (2,1,2)
plot (abs (err_f));
w_up = (* dat_f. conj (err_f));%%% en poids de nouvelles freq domaine
w w = 0.01 * (mise à jour w_up );%%%% poids lms algrothim
fin
figure (5)
plot (abs (errtt))
___________________________________