📄 var_length_low.m
字号:
%不同的迭代步长收敛性能比较图(SNR=10dB)
clear all;
close all;
clc
num12=1;
MSE1(num12)=1;
while(MSE1(num12)>0.002)
MSE1=0;
p=[1 0 0 1 0 1;1 1 0 1 1 1];
p=p(:,2:6);
init=[1 1 1 1 1];
state=kron(init,[1;1]);
c=[];
for i=1:31
output=mod(sum(p.*state,2),2);
state=[output state(:,1:4)];
c=[c output];
end;
a=2*c(1,:).'-1;
b=2*c(2,:).'-1;
s=[];
for i=1:31
b=[b(2:31);b(1)];
s=[s a.*b];
end;
s1=s(:,3)./sqrt(31);
b1=rand(1,1000);
c1=s1;
for i=1:1000
if(b1(i)>0.5)
b1(i)=1;
else
b1(i)=-1;
end
end
r1=c1*b1;
h=rand(1,10);
h2=rand(1,10);
r1=filter(h,1,r1);
% r1(:,1:2)=filter(h,1,r1(:,1:2));
% r1(:,2:1000)=filter(h2,1,r1(:,2:1000));
SNR=10;
r=awgn(r1,SNR);
lim=1*10^-6;
%---------------------LCDPFCMA-------------------------
w=s1;
u=10*10^-3;
B=eye(31)-s1*s1';
x=zeros(31,1);
H=eye(31);
%---------------
tic
for i=1:1000
X=r(:,1);
y(i)=w'*X;
e=2*(y(i)^2-1)*y(i);
g=e*B*X;
if norm(g)<0.00000000001
numerr=i
break;
end
if i==1
p=-H*g;
else
ppast=p;
j=x-x1;
k=g-g1;
H=H-(H*j*j'*H)/(j'*H*j)+k*k'/(k'*k);
% H=H-(H*k*k'*H)/(k'*H*k)+(j*j')/(k'*j);
% H=H-(H*j*j'*H)/(j'*H*j)+k*k'/(k'*k)+(j'*H*j)*((k)/(k'*k)-(H*j)/(j'*H*j))'*((k)/(k'*k)-(H*j)/(j'*H*j));
% H=H-(H*k*k'*H)/(k'*H*k)+(j*j')/(k'*j)+(k'*H*k)*((j)/(k'*j)-(H*k)/(k'*H*k))'*((j)/(k'*j)-(H*k)/(k'*H*k));
p=-H*g;
end
g1=g;
x1=x;
% u=-((s1'*R*B*p+p'*B*R*B*x)/(p'*B*R*B*p));
x=x+u*p;
w=s1+B*x;
end
toc
for i=1:numerr
if i==1
MSE1(i)=(y(i)-b1(1))^2;
else
MSE1(i)=MSE1(i-1)+(y(i)-b1(1))^2;
MSEF1(i)=MSE1(i)-MSE1(i-1);
end
end
MSE1=MSE1./[1:numerr];
y1=y;
for i=2:numerr
if MSEF1(i)<lim
num12=i;
break;
end
end
%---------------------0.005-------------------------
w=s1;
u=5*10^-3;
B=eye(31)-s1*s1';
x=zeros(31,1);
H=eye(31);
MSE2=0;
%---------------
tic
for i=1:1000
X=r(:,1);
y(i)=w'*X;
e=2*(y(i)^2-1)*y(i);
g=e*B*X;
if norm(g)<0.00000000001
numerr2=i
break;
end
if i==1
p=-H*g;
else
ppast=p;
j=x-x1;
k=g-g1;
H=H-(H*j*j'*H)/(j'*H*j)+k*k'/(k'*k);
% H=H-(H*k*k'*H)/(k'*H*k)+(j*j')/(k'*j);
% H=H-(H*j*j'*H)/(j'*H*j)+k*k'/(k'*k)+(j'*H*j)*((k)/(k'*k)-(H*j)/(j'*H*j))'*((k)/(k'*k)-(H*j)/(j'*H*j));
% H=H-(H*k*k'*H)/(k'*H*k)+(j*j')/(k'*j)+(k'*H*k)*((j)/(k'*j)-(H*k)/(k'*H*k))'*((j)/(k'*j)-(H*k)/(k'*H*k));
p=-H*g;
end
g1=g;
x1=x;
% u=-((s1'*R*B*p+p'*B*R*B*x)/(p'*B*R*B*p));
x=x+u*p;
w=s1+B*x;
end
toc
for i=1:numerr2
if i==1
MSE2(i)=(y(i)-b1(1))^2;
else
MSE2(i)=MSE2(i-1)+(y(i)-b1(1))^2;
MSEF2(i)=MSE2(i)-MSE2(i-1);
end
end
MSE2=MSE2./[1:numerr2];
y1=y;
for i=2:numerr
if MSEF2(i)<lim
num22=i;
break;
end
end
end
plot(MSE1,'k-');
hold on;
plot(MSE2,'k--')
xlabel('迭代次数');
ylabel('MSE');
title('不同的迭代步长收敛性能比较图(SNR=10dB)');
num12,num22
plot(num12,MSE1(num12),'O')
plot(num22,MSE2(num22),'O')
legend('0.001','0.0005','收敛点',1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -