我的代码:
clear all
close all
len=2^15; %仿真数据长度
Tlen=2000; %训练数据长度
step=0.01; %符号LMS算法的步长因子
N=13; %滤波器长度
s=zeros(1,len); %存放源数据
s1=zeros(1,len); %存放多径源数据
x=zeros(1,N); %存放滤波器延迟数据
w=ones(1,N); %存放权值数据
% s=randsrc(1,len);%产生随机分布的源数据
M = 4;
inipahse = pi/4;
ss = randi([0, M-1], 1, len);
s = pskmod(ss, M, inipahse);
s1(2:len)=s(1:len-1);%根据源数据产生多径源数据
%仿真多径干扰为0.1时,信噪比与误码率关系
p=0.1;
SNR = 15;
s2=sqrt(1-p)s+sqrt(p)s1; %根据多径干扰因子,产生输入数据
s3=awgn(s2,SNR,'measured'); %产生信噪比为db的输入信号
% load A.mat;
% s3 = A';
s3 = s3./max(abs(s3));
scatterplot(s3);
%符号LMS算法
for i=N:len
x(1:N)=s3(i:-1:i-N+1);
y(i)=xw';
e(i)=s(i-6)-y(i);
w = w+2stepxe(i)';
end
y = y./max(abs(s3));
scatterplot(y);
Y1 = pskdemod(y, M, inipahse);
Y2 = pskdemod(s3, M, inipahse);
% %统计误码个数
errornum1 = sum(Y1(Tlen:len)=ss(Tlen-3:len-3)); %均衡后=ss(Tlen:end)); %均衡前
errornum2 = sum(Y2(Tlen:end)
% %统计误码率
ber1 = errornum1/(len-Tlen);
ber2 = errornum2/(len-Tlen);
开始说是要使用差分编码可以解决,我就修改成了差分编码,依然无法解决