⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chesti.asv

📁 一篇基于独立分量分析(ICA)的盲信道MATLAB程序
💻 ASV
字号:
clear

tic
    niters=100;
    LogEbNo=0:5:20;  %信噪比
    len=length(LogEbNo);
for type=1:3
    type
    
for EbNoindex=1:len
    snr=LogEbNo(EbNoindex)
    %%for iters=1:niters
        avgpower=0.5;%平均衰落功率
        Fc=2e9;   %载波频率
  
        N=30;
        ha=fade(niters,avgpower);
 
        hb=fade(niters,avgpower);

      for iters=1:niters
        bitstreamlength=N;
        bitstream=zeros(1,bitstreamlength);
        bitstream=randn(1,bitstreamlength)>0.5;
        bitstream(1:2)=[1,1];
        sr0=2*bitstream-1; %BPSK调制
        s_pilot=[1,1];%导频序列
   
        h0=ha(iters);
        h1=hb(iters);  %衰落信道

        EbNo=10^(LogEbNo(EbNoindex)/10);
        Eb=sum(sr0.*sr0)/(bitstreamlength);
        No=Eb/EbNo;
        
        
        s0=sr0/sqrt(2);
        ro=zeros(1,bitstreamlength/2);
        r1=zeros(1,bitstreamlength/2);
        for index=1:bitstreamlength/2,
            ro(index)=h0*s0(2*index-1)+h1*s0(2*index);
            %%ro(i)=ro(i)+sqrt(No/2)*snoisy(2*i-1);
            r1(index)=(-1)*h0*s0(2*index)+h1*s0(2*index-1);
            %%r1(i)=r1(i)+sqrt(No/2)*snoisy(2*i);
        end
        ro2=awgnchannel(ro,No);
        r12=awgnchannel(r1,No);
        
        X1=[1,0;0,1];
        X2=[0,1;-1,0];
        r=zeros(1,bitstreamlength);
        for l=1:bitstreamlength/2,
            r(2*l-1)=ro2(l);
            r(2*l)=r12(l);
        end
        
        switch type
    case 1
        H=[h0,h1];
    case 2
        H=trained(r,s_pilot,X1,X2);
    case 3
        H=semiblind(r,s_pilot,X1,X2);
        otherwise
            beep;
            disp('You used invalid type') 
        end

        
        
        
        ho0=H(1);
        h11=H(2);
        so=zeros(1,bitstreamlength);
       for index=1:bitstreamlength/2,
            so(2*index-1)=ho0*ro2(index)+h11*r12(index);
            so(2*index)=h11*ro2(index)-ho0*r12(index);
        end
        
       
        
        srr=receive(so); 
        st=(srr+1)/2;   
        
        errors=sum(st~=bitstream); 
        ber(iters)=errors/bitstreamlength;
        
    end
   avber(EbNoindex)=sum(ber)/niters; 
  
end
BERSTBC(type,:)=avber;
end
berstbc=BERSTBC(1,:)
bertrained=BERSTBC(2,:)
bersemiblind=BERSTBC(3,:)

semilogy(LogEbNo,BERSTBC(1,:),'r-+',LogEbNo,BERSTBC(2,:),'b-*',LogEbNo,BERSTBC(3,:),'k-v');grid
axis([0 20 10^(-5) 10^0]);

legend('STBC ','STBC trained','STBC semiblind');

        toc

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -