%%%WRITTEN BY YANGCHUNXIA,2010,1,13%%%%%%%%%%%%%%distribute
clear all
clc
N=2;
%%三个用户采用对偶性迭代来实现IA的数据速率
SNR=[0:5:50];
for kk=1:2
%%
H11 = wgn(N,N,0,'complex'); H12 = wgn(N,N,0,'complex'); H13 = wgn(N,N,0,'complex');
H21 = wgn(N,N,0,'complex'); H22 = wgn(N,N,0,'complex'); H23 = wgn(N,N,0,'complex');
H31 = wgn(N,N,0,'complex'); H32 = wgn(N,N,0,'complex'); H33 = wgn(N,N,0,'complex');
%%
v1=randn(N,N/2)+sqrt(-1)*randn(N,N/2);%[p1(:,1) p1(:,4)] ;
v2=randn(N,N/2)+sqrt(-1)*randn(N,N/2); %randn(4,2)+sqrt(-1)*randn(4,2);
v3=randn(N,N/2)+sqrt(-1)*randn(N,N/2);
%% 正向方法1
for snr=1:length(SNR)
for iteration=1:200 %%一般在二十次左右收敛
xigma=10^(SNR(snr)/10);
q1=H12*v2*v2'*H12'+H13*v3*v3'*H13'+1/xigma*eye(N);%+10^(-SNR(snr)/10)*eye(2);
q2=H21*v1*v1'*H21'+H23*v3*v3'*H23'+1/xigma*eye(N);%+10^(-SNR(snr)/10)*eye(2);
q3=H31*v1*v1'*H31'+H32*v2*v2'*H32'+1/xigma*eye(N);%+10^(-SNR(snr)/10)*eye(2);
u1=ker(q1);%%%%%%%%%%%%%%%%%%%%%%%%%%;
u2=ker(q2);
u3=ker(q3);
%% 反向方法1
rq1=H21'*u2*u2'*H21+H31'*u3*u3'*H31+1/xigma*eye(N);%+10^(-SNR(snr)/10)*eye(2);
rq2=H12'*u1*u1'*H12+H32'*u3*u3'*H32+1/xigma*eye(N);%+10^(-SNR(snr)/10)*eye(2);
rq3=H13'*u1*u1'*H13+H23'*u2*u2'*H23+1/xigma*eye(N);%+10^(-SNR(snr)/10)*eye(2);
v1=ker(rq1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%;
v2=ker(rq2);
v3=ker(rq3);
%% 反向方法2
iteration;
end
%%%%%方法1
i1=u1'*H12*v2*v2'*H12'*u1+u1'*H13*v3*v3'*H13'*u1;
i2=u2'*H21*v1*v1'*H21'*u2+u2'*H23*v3*v3'*H23'*u2;
i3=u3'*H31*v1*v1'*H31'*u3+u3'*H32*v2*v2'*H32'*u3;
s1=u1'*H11*v1*v1'*H11'*u1;
s2=u2'*H22*v2*v2'*H22'*u2;
s3=u3'*H33*v3*v3'*H33'*u3;
%sr=mean(snr);
%%
yy(snr,kk)=log2(det(eye(length(H11)/2)+s1*inv(1/xigma.*u1'*u1+i1)))...
+log2(det(eye(length(H11)/2)+s2*inv(1/xigma.*u2'*u2+i2)))...
+log2(det(eye(length(H11)/2)+s3*inv(1/xigma.*u3'*u3+i3)));
% berr(snr,kk)=fber(H11,H22,H33,H12,H13,H21,H31,H23,H32,v1,v2,v3,u1',u2',u3',SNR(snr))
%xx(snr)=log2(1+10^(SNR(snr)/10)*sin1)+log2(1+10^(SNR(snr)/10)*sin2)+log2(1+10^(SNR(snr)/10)*sin3)
%zz(snr)=log2(1+10^(SNR(snr)/10)*sr1/((SNR(snr)/10)+sr1+1));
end
kk
end
y=mean(yy,2);
%berr=mean(berr,2);
set(gcf,'Position',[100 100 380 300]);
set(gca,'Position',[.13 .17 .80 .74]);
figure_FontSize=9;
set(findobj('FontSize',10),'FontSize',figure_FontSize);
b=[0.1:0.1:1,2:1:10];
hand=plot(SNR,y,'b-<');
set(hand,'LineWidth',1.5);
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','middle');
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Horizontal','right');
legend('分布式')
hold on
%plot(SNR,zz,'b*-')
%plot(zz,'r')
%hold off
grid on