资源简介
恒模滤波算法针对4QAM
代码片段和文件信息
clear all
close all
clc
M=4;
n=5000; %信号数据量及迭代次数
m=100;
h1=[0.005 0.009 -0.024 0.854 -0.218 0.049 -0.016];%信道冲击响应
L=11;
u1=0.01;
u2=0.005;
u3=0.001;
mse_av1=zeros(1n-L+1);
mse_av2=zeros(1n-L+1);
mse_av3=mse_av2;
snr=20;
for f=1:m
s=randint(1nM);%生产1*n矩阵随机数,范围在M以内
sk=qammod(sM)%4-QAM信号产生
m1=sum(abs(sk).^4);
m2=sum(abs(sk).^2);
R2=m1/m2;%计算CMA恒模常数。
s1=sk.*exp(j*pi/5);%星座图旋转
s2=filter(h11s1);
x=awgn(s2snr‘measured‘);
w1=[0 0 0 0 0 1 0 0 0 0 0];%滤波器抽头系数初始值。
w2=w1;
w3=w1;
for i=1:n-L+1
y=x(i+L-1:-1:i);
z1(i)=w1*y‘; z2(i)=w2*y‘;z3(i)=w3*y‘;%FIR均衡后信号。
e1=(R2-(abs(z1(i))^2));%误差函数
e2=(R2-(abs(z2(i))^2));
e3=(R2-(abs(z3(i))^2));
w1=w1+u1*e1*y*z1(i);
w2=w2+u2*e2*y*z2(i);
w3=w3+u3*e3*y*z3(i);
mse1(i)=e1^2;%均衡后第i个数据的误差。
mse2(i)=e2^2;
mse3(i)=e3^2;
end
mse_av1=mse_av1+mse1;
mse_av2=mse_av2+mse2;
mse_av3=mse_av3+mse3;
end
a=mse_av1/m;
b=mse_av2/m;
c=mse_av3/m;
plot(a‘k‘)hold on
plot(b‘y‘)hold on
plot(c‘g‘)hold on
legend(‘u1=0.01‘‘u2=0.005‘‘u3=0.001‘)
title(‘CMA‘)
xlabel(‘迭代次数‘‘fontsize‘14)
ylabel(‘Mean-square Error‘‘fontsize‘14)
hold on
scatterplot(s110‘k*‘)
hold on
scatterplot(x10‘k*‘)%信道传输后+高斯白噪声信号
hold on
scatterplot(z110‘k*‘)%信道传输后+高斯白噪声信号
hold on
scatterplot(z210‘k*‘)
hold on
scatterplot(z310‘k*‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1821 2017-07-12 11:09 QAM4filter.m
- 上一篇:开罗大学 细菌觅食算法工具箱
- 下一篇:DE2-70开发板中附带的引脚的分配列表
评论
共有 条评论