end
% 求我们所需要的矩阵C
A_tao=zeros(N,N);
for i=1:1:N
for j=1:1:N
if i==j
A_tao(i,j)=25.5;
elseif abs(i-j)<=49
A_tao(i,j)=1;
else
A_tao(i,j)=0;
end
end
end
C=sqrt(A_tao);
% 求的Z
Ffanshu=norm(X,'fro'); % 初始化发射信号波形矩阵X的F范数
F1=zeros(1,1500); % 初始化每次迭代的F范数
while (Ffanshu>=10^(-4)) % 迭代到满足条件的发射信号X
X0=X;
for p=1:1:2*N
wp=2*pi*p/(2*N);
for n=1:1:N;
ep=exp(-j*wp*n);
yn=X(n,:).'; %yn的转置是取X的的第n行
zn=yn*ep;
Zp(n,:)=zn.'; % 产生我们所需的Zp矩阵,我们求的矩阵式32行,五列的矩阵 %注意Zp.'表示的是Zp的转置,Zp’表示的是Zp的共轭转置矩阵
end
Bp=Zp'*C';
[U1,S,U2]=svd(Bp,'econ'); % 产生我们所需的特征值和特征向量矩阵,产生的Bp矩阵是5*32的矩阵
Up=U2*U1';
% 产生G矩阵
G=zeros(2*N,N*mt);
Dp=sqrt(25.5*N)*Up;
gp=reshape(Dp,N*mt,1); % 产生我们所需的N*mt行,一列的gp信号
G(p,:)=gp.'; % G是一个2*N行,N*mt列的矩阵
end
% 求fai,及需要的X
for n=1:1:N
for m=1:1:mt
faijiaodu=0;
uk=zeros(1,N); % 我们需要的是一个uk是具有N个值的矩阵,先定义矩阵或向量组的大小
vk=uk;
for k=1:1:N
uk(k)=C(k,n);
E=(1/sqrt(2*N))*A*G;
vk(k)=E(n,(m-1)*N+k);
uk(k)=(uk(k)').'; % 这里的变量是k
end
faijiaodu=sum(uk.*vk);
jiaodu=angle(faijiaodu);
X(n,m)=exp(j*jiaodu);
end
end
tiaojian=X-X0;
Ffanshu=norm(tiaojian,'fro');
F(1,h)=Ffanshu;
h=h+1;
if (h>1500)
break;
end
end
figure(1);
plot(1:h,F1(1:h)) %当两次迭代值满足条件10^-4时,Ffanshu收敛,由此可以得到发射信号