📄 sca.m
字号:
%说明:SCA算法,性能由ISI表示
clc;
clear all;
K=11;%抽头个数
delta=0.000002;%迭代步长因子
Num_of_realizations=1;%学习次数
SNR=25;%输入信噪比
sgma=1;%输入信号功率
N=15000;%数据长度
d=1;%最小欧式距离
Fd=1000;%波特率
Fs=1000;%采样速率
numoferr=0;
sum=0;
NB=100;
actual_isi=[0.0410+0.0109j 0.0495+0.0123j 0.0672+0.0170j 0.0919+0.0235j 0.7920+0.1281j 0.3960+0.0871j 0.2715+0.0498j 0.2291+0.0414j 0.1287+0.0154j 0.1032+0.0119j];
mse=zeros(1,N);
MSE_av=zeros(1,N-NB);
M=16;%进制数调制
for jt=1:Num_of_realizations
%产生信源
a=qam_gen(M,N,d,Fd,Fs);
a1=real(a);
a2=imag(a);
figure(1)
plot(a1,a2,'*r');
grid on;
title('(1)原始的星座图')
if(jt==1)
end;
for i=1:N
Q(i)=(abs(real(a(i))+imag(a(i)))+abs(real(a(i))-imag(a(i))))*((sign(real(a(i))+imag(a(i)))*(1+j)+sign(real(a(i))-imag(a(i))))*(1-j))*conj(a(i));
Fenzi(i)=(abs(real(a(i))+imag(a(i)))+abs(real(a(i))-imag(a(i)))).^2*Q(i);
end
R2=mean(Fenzi)/mean(Q);
x1=filter(actual_isi,1,a); %序列通过有ISI的信道滤波器
x=awgn(x1,SNR,sgma);%加噪声
x1=real(x);
x2=imag(x);
figure(2)
plot(x1,x2,'*r');
grid on;
title('(2)均衡器输入信号的星座图');
W(1:K)=0;
W((K+1)/2)=1;%均衡器抽土系数的初始值
%SCA算法
for k=K:N
x_k=x(k:-1:k-K+1);
z_k=x_k*(W.');
z(k)=z_k;
D=decide_16QAM(z_k,1);
if abs(real(z_k))>=abs(imag(z_k))
X=1;
else
X=0;
end
if abs(real(z_k))<=abs(imag(z_k))
Y=1;
else
Y=0;
end
e(k)=4*real(z_k)*(4*real(z_k)^2-R2)*X+j*4*imag(z_k)*(4*imag(z_k)^2-R2)*Y;
mse(k)=abs((z_k-D))^2;
W=W-delta*e(k)*conj(x_k);
end
if(jt==1)
end
for k=1:N-NB
ERR=0;
for i=k:k+NB
ERR=ERR+mse(i);
end
MSE(k)=ERR/NB;
end
MSE_av=MSE_av+MSE;
end
MSE_av=MSE_av/Num_of_realizations;
z1=real(z);
z2=imag(z);
figure(3)
plot(z1(N-5000:N-K+1),z2(N-5000:N-K+1),'*');
grid on;
title('(3)均衡后的星座图');
figure(4)
plot((10*log10(MSE_av)))%画ISI,单位dB
xlabel('迭代次数');
ylabel('ISI(dB)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -