📄 final_temp_comp.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 + -