通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2012-3-19
跳转到指定楼层
1#
发表于 2012-3-19 21:47:17 |只看该作者 |倒序浏览
%                              wecan的发生信号的产生
% 初始化X信号产生A矩阵
mt=4;mr=5;
N=256;p=1;
fai=2*pi*(rand(N,mt)-0.5);         % 产生角度编码矩阵   
X=exp(j*fai);                      % 产生一N*mt的随机X信号矩阵,初始化X
A=zeros(2*N,2*N);                  
Z=zeros(2*N,N);
h=1;
% 求矩阵A
for p=1:1:2*N
     wp=2*pi*p/(2*N);
     m=1:1:2*N;
     ap=exp(-j*m*wp);
     A(:,p)=(1/sqrt(2*N))*ap';
     
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收敛,由此可以得到发射信号


哪位matlab牛人指点一下,小女子这段程序哪里有问题,都半个月了,导师快把我逼疯了,改了N多遍,还是有问题。小女子刚上研一,初学。感谢高人指点!

举报本楼

本帖有 1 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

版规|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2025-8-3 05:02 , Processed in 0.135942 second(s), 17 queries , Gzip On.

Copyright © 1999-2025 C114 All Rights Reserved

Discuz Licensed

回顶部