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

📄 stbc14.m

📁 信号与系统基础知识包括连续信号与模型、离散信号与模型;常用信号变换包括Z变换、
💻 M
字号:
function [FER,FER_uncoded,SER,SER_uncoded, BER, BER_uncoded]=stbc14(channel_model,K,Num,no_tx_antennas,no_rx_antennas,modulation)%SNR upto 20 dBsEbNo=[0:2:20];%N, M: number of transmit and receive antennasN=no_tx_antennas;M=no_rx_antennas;%initialize countidx = 1; h=waitbar(0,'Percentage Completed');set(h,'Position',[230 60 275.25 56.25]);set(h,'name','Please wait...');wb=9.09;for SNR=EbNo   sigma=0.5/(10^(SNR/10));     % Num -> number of packets       for packet_count=1:Num% we are interested in transmitting 'K' SYMBOLS not bits. Hence, K*2 for QPSK% etc.            switch (modulation)                case 'BPSK '                    data=randint(K,N);                    BIT=1;                case 'QPSK '                    data=randint(K*2,N);                    BIT=2;                case '8PSK '                    data=randint(K*3,N);                    BIT=3;                case '16QAM'                    data=randint(K*4,N);                    BIT=4;                otherwise                    disp('No Modulation')           endtx_bits=data.';[temp s P]=tx_modulate(tx_bits,modulation);%ready to transmit symbols of length 'K'X=temp.';fr_length=length(X); % MRCx0=X;% form the channel matrixif channel_model=='AWGN    '    Hr=ones(fr_length,M);else    Hr=(randn(fr_length,M)+j*randn(fr_length,M))/sqrt(2);end        %transmission matrix   H=reshape(Hr,fr_length,M);Habs=sum(abs(H).^2,2);%received signal per receiver antenna    r1=sum(H(:,1).*x0,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r2=sum(H(:,2).*x0,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r3=sum(H(:,3).*x0,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r4=sum(H(:,4).*x0,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); % demodulate the received signalsz1=r1.*conj(H(:,1))+r2.*conj(H(:,2))+r3.*conj(H(:,3))+r4.*conj(H(:,4));%uncoded(1,1)r01=H(:,1).*x0+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1));%form estimatesfor m=1:P   d01(:,m)=abs(r01-H(:,1)*s(m)).^2; %uncoded signal      %coded signal   d1(:,m)=abs(sum(z1,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2;end% determine the minimum of estimates      %decision for detecting uncoded[y0,i0]=min((d01),[],2);s0d=s(i0).';clear d01      %decision for detecting s1     [y1,i1]=min((d1),[],2);s1d=s(i1).';clear d1    % form received symbols    Xd=[s1d];%determine symbol errors   error_un(packet_count)=sum(X(:,1)~=s0d);% for uncodedtemp1=X>0;temp2=Xd>0;error(packet_count)=sum(sum(temp1~=temp2));% for coded       end% end of FOR loop for "packet_count"%calculate FER, SER and BER for current idx%for uncoded signalSER_uncoded(idx)=sum(error_un)/(Num*K);BER_uncoded(idx)=SER_uncoded(idx)/BIT;FER_uncoded(idx)=SER_uncoded(idx)*K;%for coded signalSER(idx)=sum(error)/(Num*K);BER(idx)=SER(idx)/BIT;FER(idx)=SER(idx)*K;  %increment idx  idx=idx + 1;str_bar=[num2str(wb) '% Completed'];waitbar(wb/100,h,str_bar);wb=wb+9.09;end% end of FOR loop for SNRclose(h);   

⌨️ 快捷键说明

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