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

📄 final_temp_comp.asv

📁 stbc for flat rayleigh fading channel
💻 ASV
字号:
% comparison between M-order Psk system 

clc;
clear all;
close all;

[frame_size,Nt,Nr,mod_scheme,M,size_encoder,channel,coderate]=parameters();
m=[2 4 8];
%-----------------------------Input data
rand_data=round(rand(frame_size,1));
tts=[];
for order=1:size(m,2)
    M=m(order);
    bits=log2(M);
%     rand_data=rand_data(1:floor(size(rand_data,1)/bits)*bits,1);
%------------------------- Modulation
[mod_vector,const,map_gray]=modulator(rand_data,bits,M,mod_scheme);
sn=[];be=[];
for avg=1:10
snn=[];bee=[];
for snr=1:20
    total_err=0;decoded_data=[];reci=[];
    for i=1:size_encoder:size(mod_vector,1)-size_encoder+1
        temp_input_encoder=mod_vector(i:i+size_encoder-1,:);
        
        %-----------------------------------------STC encoder
        temp_out_encoder=stc_encoder(temp_input_encoder,size_encoder);
        
        %---------------------------------------- Generation of Channel co-efficient
        H=ch_coefficient(channel,Nr,Nt);
%         n=noise(snr,Nr,Nt,mod_scheme,temp_out_encoder);
        %--------------------------------------- Channel
        for time_slot=1:size(temp_out_encoder,2)
            temp_data_trans=temp_out_encoder(:,time_slot);
            
%             H=ch_coefficient(channel,Nr,Nt);      % Generating channel coefficients for AWGN channel
%             H=ch_coefficient(channel,Nr,Nt);       % Generating channel coefficients for Rayleigh channel

            %------------------------------------ Noise addition
            n=noise(snr,Nr,Nt,mod_scheme,temp_data_trans);
            
            %------------------------------------- Receiver
            rec(:,time_slot)=receiver(H,temp_data_trans,n,Nr);
        end
        
        %---------------------------------------- combiner
        S=combiner(Nr,H,rec);
%         ttt=reshape(S,size(S,1)*size(S,2),1);
%         reci=[reci;ttt];
        
        %---------------------------------------- calculate Distance
        d=distance(const,S);
        
        %--------------------------------------- Decision Vector
        decision=decision_vector(d,const,H);
        [value,position]=min(decision);
        
        %--------------------------------------- Decoding
        decoded=decoding(bits,position,map_gray);
        decoded_data=[decoded_data;decoded];      
    end
    temp=size(decoded_data,1);
    rand_data=rand_data(1:temp,1);
    total_err=sum(rand_data~=decoded_data);
    time_slot=size_encoder/coderate;
    ber=bit_error_rate(total_err,frame_size,bits,time_slot);
    snn=[snn snr];
    bee=[bee ber];
end
% figure;
% plot(real(reci),imag(reci),'*','Markersize',6);
sn=[sn;snn];be=[be;bee];
end
b=sum(be,1)/avg;s=sum(sn,1)/avg;
tts=[tts;b];
end
semilogy(s,tts(1,:),'b','LineStyle','--');xlabel('SNR(Eb/No)');ylabel('BER');
hold on;
semilogy(s,tts(2,:),'b','LineStyle','**');
semilogy(s,tts(3,:),'r');
legend('BPSK','QPSK','8-PSK',3);
hold off;


% save(strcat(num2str(Nr),'x',num2str(Nt),'_',num2str(M),'-',mod_scheme),'b');
% disp(' )
% figure;
% semilogy(sn,tts(1,:),'b');
% hold on;
% xlabel('Eb/No');ylabel('BER');
% semilogy(sn,tts(2,:),'b','LineStyle','--');
% semilogy(sn,tts(3,:),'b','LineStyle','*');
% legend('BPSK with STBC','QPSK without STBC','8-PSK with STBC',3);
% hold off;
% semilogy(sn,tts);

⌨️ 快捷键说明

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