?? cxaoriginal.m
字號:
clc;
clear all;
close all;
%本程序為T/2分數(shù)間隔均衡器用來產(chǎn)生符號間隔輸出信號
K=31; %均衡器抽頭個數(shù)
Mu=0.0000004;
Num_of_realizations=1; %學習次數(shù)
SNR=30; %輸入信噪比
sgma=1; %輸入信號功率
N=10000; %均衡器輸入數(shù)據(jù)長度
d=1; %最小歐式距離
Fd=1000; %波特率
Fs=1000; %采樣速率
channel_selector=16; %信道頻率抽取間隔
ISI_av=zeros(1,N-K+1); %平均碼間干擾初始值
MD_av=zeros(1,N-K+1);
M=32; %進制數(shù)調(diào)制
k1=0.8152;
%k1=0.8944;
%k1=0.8056;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%%%%%%%%%%設(shè)定信道%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load chan5 C
chan=C;
% % load chan1 C
% if channel_selector==0
% chan=C;
% clear C rt
% else
% freq_full=fft(C,256);
% freq_dec=freq_full(1:channel_selector:256);%信道頻率抽取
% chan=(ifft(freq_dec)).';
% clear C rt freq_full freq_dec
% end
for jt=1:Num_of_realizations
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%產(chǎn)生均衡器輸入信號%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a=qam_gen(M,N,d,Fd,Fs); %產(chǎn)生符號間隔調(diào)制信號
R=3.7714 %計算常模數(shù)R
% R=4.2073;
%R=7.6405;
a1=real(a);
a2=imag(a);
figure(1)
plot(a1,a2,'*k');
hold on
% title('(1)原始的星座圖') %畫原始的信號星座圖
if(jt==1)
end;
a3=zeros(2*N,1)';
a3(1:2:2*N)=a; %調(diào)制信號的升采樣
x1=filter(chan,1,a3); %產(chǎn)生均衡器的輸入
x=awgn(x1,SNR,sgma); %加噪聲
x1=real(x(1:2:end));
x2=imag(x(1:2:end));
% figure(2)
% plot(x1,x2,'*r');
% grid on;
% title('(2)均衡器輸入信號的星座圖'); %畫均衡前的信號星座圖
W(1:K)=0;
W((K+1)/2)=1; %均衡器抽頭系數(shù)的初始值
Wkeep=W.'*ones(1,2*N);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%CXA算法%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
count=0;
for k=K+1:2:2*N
xk=x(k:-1:k-K+1);
zk=xk*(W.');
z(k-K+1)=zk;
zkr=real(zk);
zki=imag(zk);
zy=abs(k1*zkr+zki)+abs(k1*zkr-zki)+abs(zkr-k1*zki)+abs(zkr+k1*zki)-abs(zkr+zki)-abs(zkr-zki);
X=k1*sign(k1*zkr+zki)+k1*sign(k1*zkr-zki)+sign(zkr+k1*zki)+sign(zkr-k1*zki)-sign(zkr+zki)-sign(zkr-zki);
Y=k1*sign(zkr+k1*zki)-k1*sign(zkr-k1*zki)+sign(k1*zkr+zki)-sign(k1*zkr-zki)-sign(zkr+zki)+sign(zkr-zki);
s(k)=((zy)^2-4*R^2)*zy*(X+j*Y);
W=W-Mu*s(k)*conj(xk);
count=count+1;
Wkeep(:,count)=W.';
end
if(jt==1)
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%均衡器性能%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
for lll=1:N-K+1
jjj=conv(chan,Wkeep(:,lll));
jjje=jjj(1:2:end); %%降采樣(奇數(shù))
jjjo=jjj(2:2:end); %%%%降采樣(偶數(shù))
isie(lll)=ISIDSE(jjje);
isio(lll)=ISIDSE(jjjo);
end
for kkk=1:N-K+1
hhh=conv(chan,Wkeep(:,kkk));
hhhe=hhh(1:2:end); %%降采樣(奇數(shù))
hhho=hhh(2:2:end); %%%%降采樣(偶數(shù))
mde(kkk)=MDDSE(hhhe);
mdo(kkk)=MDDSE(hhho);
end
ISI_av=ISI_av+isio;
MD_av=MD_av+mdo;
end
ISI_av=ISI_av/Num_of_realizations;
MD_av=MD_av/Num_of_realizations;
z2=imag(z(2:2:end)).';
z1=real(z(2:2:end)).';
figure(3)
plot(z1(N-2000:N-K+1),z2(N-2000:N-K+1),'*k');
xlabel('CXA');
figure(4)
plot(10*log10(ISI_av),'k');
% hold on;
% load mcxaisi5;
% plot(10*log10(isi5mcxa),'k');
% hold on;
% load ddmcxaisi5;
% plot(10*log10(isi5ddmcxa),'k');
% figure(5)
% plot(MD_av,'k');
% hold on;
% load mcxamd5;
% plot(md5mcxa,'k');
% hold on;
% load ddmcxamd5;
% plot(md5ddmcxa,'k');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -