📄 qpsk_zuoye.m
字号:
% 发送比特速率100kbit/s;mutipath number is 22; clc; clear all; close all; N=2*10^4; sig_send=rand(1,N); sig_send=sign(sig_send-0.5); n=4; sig_refer=[1 1; 1 -1; -1 1; -1 -1]; sig_temp=zeros(4,2*n); sig_temp(1,:)=symbol_sample(sig_refer(1,:),n); sig_temp(2,:)=symbol_sample(sig_refer(2,:),n); sig_temp(3,:)=symbol_sample(sig_refer(3,:),n); sig_temp(4,:)=symbol_sample(sig_refer(4,:),n); sig_qpsk=zeros(size(sig_send,2)/2,2); for ii=1:2:size(sig_send,2)-1 sig_qpsk((ii+1)/2,1)=sig_send(ii); end; for ii=2:2:size(sig_send,2) sig_qpsk((ii)/2,2)=sig_send(ii); end; % --- awgn channel----------------------------snr_plot=-10:10; bit_error=[];for snr=-10:10 num_error=0; for ii=1:size(sig_send,2)/2 sig_chan=symbol_sample(sig_qpsk(ii,:),n); sig_rec=awgn(sig_chan,snr,'measured'); rec_temp=sig_rec*sig_temp'; if max(rec_temp)==rec_temp(1) deci=[1 1]; elseif max(rec_temp)==rec_temp(2) deci=[1 -1]; elseif max(rec_temp)==rec_temp(3) deci=[-1 1]; elseif max(rec_temp)==rec_temp(4) deci=[-1 -1]; end; if deci(1)~=sig_qpsk(ii,1) num_error=num_error+1; elseif deci(2)~=sig_qpsk(ii,2) num_error=num_error+1; end; end; bit_error_temp=num_error/N; bit_error=[bit_error,bit_error_temp];end;figure; semilogy(snr_plot,bit_error,'r*-.'); grid on; title('AWGN信道情况的误码率'); ylabel('BER'); xlabel('信噪比(dB)');%----------------------awgn channel--------------------%----------------------rayleigh channel---------------- sig_refer=[1 i; 1 -i; -1 i; -1 -i]; sig_temp=zeros(4,2*n); sig_temp(1,:)=symbol_sample(sig_refer(1,:),n); sig_temp(2,:)=symbol_sample(sig_refer(2,:),n); sig_temp(3,:)=symbol_sample(sig_refer(3,:),n); sig_temp(4,:)=symbol_sample(sig_refer(4,:),n);snr_plot=-10:10;bit_error_ray=[];for snr=-10:10 num_error=0; x1=symbol_sample(sig_qpsk(:,1)',n); x2=symbol_sample(sig_qpsk(:,2)',n); sigma=1/sqrt(10^(snr/10)); num_path=2; ray_factor=0.5; time_delay=[0,2]; p_path=[1,3/7]; y1=Rayleigh_DuoJing... (x1,sigma,num_path,ray_factor,time_delay,p_path); y2=i*Rayleigh_DuoJing... (x2,sigma,num_path,ray_factor,time_delay,p_path); for ii=1:N/2 cor_temp=... real([y1(n*(ii-1)+1:n*ii),y2(n*(ii-1)+1:n*ii)]*sig_temp'); if max(cor_temp)==cor_temp(1) deci=[1 1]; elseif max(cor_temp)==cor_temp(2) deci=[1 -1]; elseif max(cor_temp)==cor_temp(3) deci=[-1 1]; elseif max(cor_temp)==cor_temp(4) deci=[-1 -1]; end; if deci(1)~=sig_qpsk(ii,1) num_error=num_error+1; elseif deci(2)~=sig_qpsk(ii,2) num_error=num_error+1; end; end; bit_error_temp=num_error/N; bit_error_ray=[bit_error_ray,bit_error_temp];end;figure; semilogy(snr_plot,bit_error_ray,'r^-.'); grid on;title('Rayleigh信道误码率'); ylabel('BER'); xlabel('信噪比');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -