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

📄 qpsk_zuoye.m

📁 matlab的调制解调
💻 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 + -