基于matlab的QPSK系统仿真 - 图文

更新时间:2024-07-02 06:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于MATLAB的QPSK系统仿真

专业:通信工程 班级:通信12-1班

姓名:刘国庆

学号:1205100225

基于MATLAB的QPSK系统仿真

摘要:

通过完成设计内容, 复习QPSK调制解调的基本原理,同时也要复习通信系统的主要组成部分,了解调制解调方式中最基础的方法。了解QPSK的实现方法及数学原理。并对“通信”这个概念有个整体的理解,学习数字调制中误码率测试的标准及计算方法。同时还要复习随机信号中时域用自相关函数,频域用功率谱密度来描述平稳随机过程的特性等基础知识,来理解高斯信道中噪声的表示方法,以便在编程中使用。

理解QPSK调制解调的基本原理,并使用MATLAB编程实现QPSK信号在高斯信道和瑞利衰落信道下传输,以及该方式的误码率测试。复习MATLAB编程的基础知识和编程的常用算法以及使用MATLAB仿真系统的注意事项,并锻炼自己的编程能力,通过编程完成QPSK调制解调系统的仿真,以及误码率测试,并得出响应波形。在完成要求任务的条件下,尝试优化程序。

关键字: QPSK 现代通信 MATLAB 仿真

一.前言

1.1QPSK系统的应用背景简介

QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。在19世纪80年代初期,人们选用恒定包络数字调制。这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求,不足之处是其频谱利用率低于线性调制技术。19世纪80年代中期以后,四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。

1.2实验平台和实验内容 1.2.1实验平台

本实验是基于Matlab的软件仿真,只需PC机上安装MATLAB 6.0或者以上版本即可。

(本实验附带基于Matlab Simulink (模块化)仿真,如需使用必须安装simulink 模块) 1.2.2实验内容 1.构建一个理想信道基本QPSK仿真系统,要求仿真结果有 a.基带输入波形及其功率谱 b.QPSK信号及其功率谱 c.QPSK信号星座图

2.构建一个在AWGN(高斯白噪声)信道条件下的QPSK仿真系统,要求仿真

结果有

a.QPSK信号及其功率谱 b.QPSK信号星座图

c.高斯白噪声信道条件下的误码性能以及高斯白噪声的理论曲线,要求所有误码性能曲线在同一坐标比例下绘制 3验可选做扩展内容要求:

构建一个先经过Rayleigh(瑞利衰落信道),再通过AWGN(高斯白噪声)信道条件下的条件下的QPSK仿真系统,要求仿真结果有

a.QPSK信号及其功率谱

b.通过瑞利衰落信道之前和之后的信号星座图,前后进行比较

c.在瑞利衰落信道和在高斯白噪声条件下的误码性能曲线,并和二.2.c中所要求的误码性能曲线在同一坐标比例下绘制

二、系统实现框图和分析

2.1、QPSK调制部分,原理框图如图1所示

?1(t)=2cos(2?fct)

T二进制 数据序列 极性NRZ 电平编码器 分离器 ?QPSK 信号(st) ?2(t)=2sin(2?fct)

T 图1 原理分析:

基本原理及系统结构

QPSK与二进制PSK一样,传输信号包含的信息都存在于相位中。的别的载波相位取四个等间隔值之一,如л/4, 3л/4,5л/4,和7л/4。相应的,可将发射信号定义为

2E/tcos[2?ft?(2i?1)?/4] 0≤t≤T

Si(t) =

0。, 其他

其中,i=1,2,2,4;E为发射信号的每个符号的能量,T为符号持续时间,载

波频率f等于nc/T,nc为固定整数。每一个可能的相位值对应于一个特定的二位组。例如,可用前述的一组相位值来表示格雷码的一组二位组:10,00,01,11。

下面介绍QPSK信号的产生和检测。如果a为典型的QPSK发射机框图。输入的二进制数据序列首先被不归零(NRZ)电平编码转换器转换为极性形式,即负号1和0分别用Eb和-Eb表示。接着,该二进制波形被分接器分成两个分别由输入序列的奇数位偶数位组成的彼此独立的二进制波形,这两个二进制波形分别用a1(t),和a2(t)表示。容易注意到,在任何一信号时间间隔内a1(t),和a2(t)的幅度恰好分别等于Si1和 Si2,即由发送的二位组决定。这两个二进制波形a1(t),和a2(t)被用来调制一对正交载波或者说正交基本函数:?1(t)=2cos(2?f)ct,?2(t)=2sin(2?f)这样就得到一对二进制PSKct。

TT信号。?1(t)和?2(t)的正交性使这两个信号可以被独立地检测。最后,将这两个二进制PSK信号相加,从而得期望的QPSK。

2.2、QPSK解调部分,原理框图如图2所示:

?1(t) 同相信道 门限=0 低通filrer 判决门限 接收信 号 x(t) 复接器 发送二进制序列的低通filrer 判决门限 ?2(t) 正交信道 门限=0

图2 原理分析:

QPSK接收机由一对共输入地相关器组成。这两个相关器分别提供本地产生地

相干参考信号?1(t)和?2(t)。相关器接收信号x(t),相关器输出地x1和x2被用来与门限值0进行比较。如果x1>0,则判决同相信道地输出为符号1;如果x1<0 ,则判决同相信道的输出为符号0。;类似地。如果正交通道也是如此判决输出。最后同相信道和正交信道输出这两个二进制数据序列被复加器合并,重新得到原始的二进制序列。在AWGN信道中,判决结果具有最小的负号差错概率。

三、实验结果及分析

根据图1和图2的流程框图设计仿真程序,得出结果并且分析如下: 3.1、理想信道下的仿真,实验结果如图3所示

图3 实验结果分析:

如图上结果显示,完成了QPSK信号在理想信道上的调制,传输,解调的过程,由于调制过程中加进了载波,因此调制信号的功率谱密度会发生变化。并且可以看出调制解调的结果没有误码。

3.2、高斯信道下的仿真,结果如图4所示:

图4

实验结果分析:

由图4可以得到高斯信道下的调制信号,高斯噪声,调制输出功率谱密度曲线和QPSK信号的星座图。

在高斯噪声的影响下,调制信号的波形发生了明显的变化,其功率谱密度函数相对于图1中的调制信号的功率谱密度只发生了微小的变化,原因在于高斯噪声是一个均值为0的白噪声,在各个频率上其功率是均匀的,因此此结果是真确的。星座图反映可接收信号早高斯噪声的影响下发生了误码,但是大部分还是保持了原来的特性。

3.3、先通过瑞利衰落信道再通过高斯信道的仿真。实验结果如图5所示:

图5 实验结果分析:

由图5可以得到瑞利衰落信道前后的星座图,调制信号的曲线图及其功率谱密度。最后显示的是高斯信道和瑞利衰落信道的误码率对比。由图可知瑞利衰落信道下的误码率比高斯信道下的误码率高。 至此,仿真实验就全部完成。

Simulink 仿真数据:

1、调制框图,如图6所示

2、解调模块如图7所示

图6

图7 3、调制信号及其功率谱密度如图8所示

图8

4、调制信号的星座图如图9所示:

图9

5、基带信号与调制信号之间的关系如图10所示:

图10

附录2: %主文件

%题目: 理想信道 瑞利衰落信道 高斯信道 下的QPSK仿真 clear;

%%%%%%%%%%%%%%%%%%%%% %%% 初始化参数

%%%%%%%%%%%%%%%%%%%%%

T=1; % 基带信号宽度,也就是频率 fc=10/T; % 载波频率

ml=2; % 调制信号类型的一个标志位(选取2的原因见23行) nb=100; % 传输的比特数 delta_T=T/200; % 采样间隔 fs=1/delta_T; % 采样频率 SNR=0; % 信噪比

t=0:delta_T:nb*T-delta_T; % 限定t的取值范围 N=length(t); % 采样数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %调制部分

% 基带信号的产生

data=randn(1,nb)>0.5; % 调用一个随机函数(0 or 1),输出到一个1*100的矩阵 datanrz=data.*2-1; % 变成极性码

data1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

data1((q-1)/delta_T+1:q/delta_T)=datanrz(q); % 将极性码变成对应的波形信号 end

% 将基带信号变换成对应波形信号

data0=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵

for q=1:nb

data0((q-1)/delta_T+1:q/delta_T)=data(q); % 将极性码变成对应的波形信号 end

% 发射的信号

data2=abs(fft(data1));

% 串并转换,将奇偶位数据分开

idata=datanrz(1:ml:(nb-1)); % 将奇偶位分开,因此间隔m1为2 qdata=datanrz(2:ml:nb); % QPSK信号的调制

ich=zeros(1,nb/delta_T/2); % 创建一个1*nb/delta_T/2的零矩阵,以便后面存放奇偶位数据

for i=1:nb/2

ich((i-1)/delta_T+1:i/delta_T)=idata(i); end

for ii=1:N/2

a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii)); end

idata1=ich.*a; % 奇数位数据与余弦函数相乘,得到一路的调制信号 qch=zeros(1,nb/2/delta_T); for j1=1:nb/2

qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1); end

for jj=1:N/2

b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj)); end

qdata1=qch.*b; % 偶数位数据与余弦函数相乘,得到另一路的调制信号

s=idata1+qdata1; % 将奇偶位数据合并,s即为QPSK调制信号 ss=abs(fft(s)); % 快速傅里叶变换得到频谱

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% 瑞利衰落信道和高斯信道 %%%%%%%%%%%%%%%%%%%%%%% 瑞利衰落信道 ray_ich=raylrnd(0.8,1,nb/2/delta_T); ray_qch=raylrnd(0.8,1,nb/2/delta_T); Ray_idata=idata1.*ray_ich; Ray_qdata=qdata1.*ray_qch; Ray_s=Ray_idata+Ray_qdata;

%%%%%%%%%%%%%%%%%%%%%%%%%% % 高斯信道

s1=awgn(s,SNR); % 通过高斯信道之后的信号

s11=abs(fft(s1)); % 快速傅里叶变换得到频谱 s111=s1-s; % 高斯噪声曲线 %%%%%%%%%%%%%%%%%%%%%%%%%%

Awgn_s=awgn(Ray_s,SNR); % 通过高斯信道再通过瑞利衰落信道

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% QPSK 解调部分 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 解调部分(高斯信道)

idata2=s1.*a; % 这里面其实隐藏了一个串并转换的过程 qdata2=s1.*b; % 对应的信号与正余弦信号相乘

idata3=zeros(1,nb/2); % 建立1*nb数组,以存放解调之后的信号 qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 for n=1:nb/2

% A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T)); if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0 idata3(n)=1;

else idata3(n)=0; end

% A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T)); if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0 qdata3(n)=1; else qdata3(n)=0; end end

% 为了显示星座图,将信号进行处理 idata4=zeros(1,nb/2); qdata4=zeros(1,nb/2); for n=1:nb/2

Awgn_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_ichsum(n)>=0 idata4(n)=1; else idata4(n)=0; end

Awgn_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_qchsum(n)>=0 qdata4(n)=1; else qdata4(n)=0; end end

% 将判决之后的数据存放进数组 demodata=zeros(1,nb);

demodata(1:ml:(nb-1))=idata3; % 存放奇数位 demodata(2:ml:nb)=qdata3; % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平) demodata1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵

for q=1:nb

demodata1((q-1)/delta_T+1:q/delta_T)=demodata(q); % 将极性码变成对应的波形信号 end

% 累计误码数

% abs(demodata-data)求接收端和发射端

% 数据差的绝对值,累计之后就是误码个数 Awgn_num_BER=sum(abs(demodata-data))

%%%%%%%%%%%%%%%%%%% % 解调部分(瑞利+高斯)

Ray_idata2=Ray_s.*a; % 这里面其实隐藏了一个串并转换的过程 Ray_qdata2=Ray_s.*b; % 对应的信号与正余弦信号相乘

% Ray_idata3=zeros(1,nb/2); % 建立1*nb数组,以存放解调之后的信号 % Ray_qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 % for n=1:nb/2

% if Ray_sum(Ray_idata2((n-1)/delta_T+1:n/delta_T))>=0 % Ray_idata3(n)=1;

% else Ray_idata3(n)=0; % end

% if Ray_sum(Ray_qdata2((n-1)/delta_T+1:n/delta_T))>=0 % Ray_qdata3(n)=1; % else Ray_qdata3(n)=0; % end % end

% 为了显示星座图,将信号进行处理 Ray_idata4=zeros(1,nb/2); Ray_qdata4=zeros(1,nb/2); for n=1:nb/2

Ray_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Ray_ichsum(n)>=0 Ray_idata4(n)=1; else Ray_idata4(n)=0; end

Ray_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Ray_qchsum(n)>=0 Ray_qdata4(n)=1; else Ray_qdata4(n)=0; end end

% 将判决之后的数据存放进数组 Ray_demodata=zeros(1,nb);

Ray_demodata(1:ml:(nb-1))=Ray_idata4; % 存放奇数位 Ray_demodata(2:ml:nb)=Ray_qdata4; % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平) Ray_demodata1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

Ray_demodata1((q-1)/delta_T+1:q/delta_T)=Ray_demodata(q); % 将极性码变成对应的波形信号 end

% 累计误码数

% abs(demodata-data)求接收端和发射端

% 数据差的绝对值,累计之后就是误码个数 Ray_num_BER=sum(abs(Ray_demodata-data))

%% 误码率计算

%% 调用了cm_sm32();和cm_sm33()函数 %%声明: 函数声明在另外俩个M文件中

%%作用: cm_sm32()用于瑞利信道误码率的计算 %% cm_sm33()用于高斯信道误码率的计算 %% ecoh on/off 作用在于决定是否显示指令内容 %%%

SNRindB1=0:1:6; SNRindB2=0:0.1:6; % 瑞利衰落信道

for i=1:length(SNRindB1),

[pb,ps]=cm_sm32(SNRindB1(i)); % 比特误码率 smld_bit_ray_err_prb(i)=pb; smld_symbol_ray_err_prb(i)=ps; disp([ps,pb]); echo off; end;

% 高斯信道 echo on;

for i=1:length(SNRindB1),

[pb1,ps1]=cm_sm33(SNRindB1(i)); smld_bit_awgn_err_prb(i)=pb1; smld_symbol_awgn_err_prb(i)=ps1; disp([ps1,pb1]); echo off; end;

% 理论曲线 echo on;

for i=1:length(SNRindB2),

SNR=exp(SNRindB2(i)*log(10)/10); % 信噪比

theo_err_awgn_prb(i)=0.5*erfc(sqrt(SNR)); % 高斯噪声理论误码率

theo_err_ray_prb(i)=0.5*(1-1/sqrt(1+1/SNR)); % 瑞利衰落信道理论误码率 echo off; end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% h = spectrum.welch; % 类似于C语言的宏定义,方便以下的调用 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% 输出显示部分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 第一部分(理想) figure(1)

subplot(3,2,1);

plot(data0),title('基带信号'); axis([0 20000 -2 2]); subplot(3,2,2);

psd(h,data1,'fs',fs),title('基带信号功率谱密度'); subplot(3,2,3);

plot(s),title('调制信号'); axis([0 500 -3 3]); subplot(3,2,4);

psd(h,s,'fs',fs),title('调制信号功率谱密度'); subplot(3,2,5);

plot(demodata1),title('解调输出'); axis([0 20000 -2 2]); subplot(3,2,6);

psd(h,demodata1,'fs',fs),title('解调输出功率谱密度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 通过高斯信道 figure(2)

subplot(2,2,1);

plot(s1),title('调制信号(Awgn)'); axis([0 500 -5 5]); subplot(2,2,2);

psd(h,s1,'fs',fs),title('调制信号功率谱密度(Awgn)'); subplot(2,2,3);

plot(s111),title('高斯噪声曲线'); axis([0 2000 -5 5]); subplot(2,2,4); for i=1:nb/2

plot(idata(i),qdata(i),'r+'),title('QPSK信号星座图(Awgn)');hold on; axis([-2 2 -2 2]);

plot(Awgn_ichsum(i),Awgn_qchsum(i),'*');hold on; legend('理论值(发射端)','实际值(接收端)'); end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%通过高斯信道再通过瑞利衰落信道 figure(3) subplot(2,2,1)

plot(Ray_s),title('调制信号(Ray+Awgn)'); axis([0 500 -5 5]); subplot(2,2,2);

psd(h,Ray_s,'fs',fs),title('调制信号功率谱密度(Ray)'); subplot(2,2,3); for i=1:nb/2

plot(idata(i),qdata(i),'r+'),title('QPSK信号星座图(Awgn+Ray)');hold on; axis([-2 2 -2 2]);

plot(Ray_ichsum(i),Ray_qchsum(i),'*');hold on; legend('理论值(发射端)','实际值(接收端)'); end

subplot(2,2,4)

semilogy(SNRindB2,theo_err_awgn_prb,'r'),title('误码率曲线');hold on; semilogy(SNRindB1,smld_bit_awgn_err_prb,'r*');hold on; semilogy(SNRindB2,theo_err_ray_prb);hold on; semilogy(SNRindB1,smld_bit_ray_err_prb,'*'); xlabel('Eb/No');ylabel('BER');

legend('理论AWGN','仿真AWGN','理论Rayleigh','仿真Rayleigh');

%文件2

function [pb,ps]=cm_sm32(snr_in_dB) % [pb,ps]=cm_sm32(snr_in_dB)

% CM_SM3 finds the probability of bit error and symbol error for % the given value of snr_in_dB, signal to noise ratio in dB.

N=100;

E=1; % energy per symbol numofsymbolerror=0; numofbiterror=0; counter=0;

snr=10^(snr_in_dB/10); % signal to noise ratio sgma=sqrt(E/snr)/2; % noise variance s00=[1 0]; s01=[0 1]; s11=[-1 0]; s10=[0 -1]; % signal mapping % generation of the data source while(numofbiterror<100) for i=1:N,

temp=rand; % a uniform random variable between

0 and 1

if (temp<0.25), % with probability 1/4, source output is \

dsource1(i)=0; dsource2(i)=0;

elseif (temp<0.5), % with probability 1/4, source output is \

dsource1(i)=0; dsource2(i)=1;

elseif (temp<0.75), % with probability 1/4, source output is \

dsource1(i)=1; dsource2(i)=0;

else % with probability 1/4, source output is \

dsource1(i)=1; dsource2(i)=1; end; end;

% detection and the probability of error calculation

for i=1:N,

ray=raylrnd(0.8);

n=sgma*randn(1,2); % 2 normal distributed r.v with 0, variance sgma

if ((dsource1(i)==0) & (dsource2(i)==0)), r=ray*s00+n;

elseif ((dsource1(i)==0) & (dsource2(i)==1)), r=ray*s01+n;

elseif ((dsource1(i)==1) & (dsource2(i)==0)), r=s10*ray+n; else

r=s11*ray+n; end;

% The correlation metrics are computed below

c00=dot(r,s00); c01=dot(r,s01); c10=dot(r,s10); c11=dot(r,s11); % The decision on the ith symbol is made next c_max=max([c00,c01,c10,c11]);

if (c00==c_max), decis1=0; decis2=0; elseif (c01==c_max), decis1=0; decis2=1; elseif (c10==c_max), decis1=1; decis2=0; else decis1=1; decis2=1; end;

% Increment the error counter, if the decision is not correct symbolerror=0;

if (decis1~=dsource1(i)), numofbiterror=numofbiterror+1; symbolerror=1; end;

if (decis2~=dsource2(i)), numofbiterror=numofbiterror+1; symbolerror=1;

end;

if (symbolerror==1), numofsymbolerror=numofsymbolerror+1; end; end

counter=counter+1; end

ps=numofsymbolerror/(N*counter); % since there are totally N symbols

pb=numofbiterror/(2*N*counter); % since 2N bits are transmitted %文件3

function [pb1,ps1]=cm_sm32(snr_in_dB) % [pb,ps]=cm_sm32(snr_in_dB)

% CM_SM3 finds the probability of bit error and symbol error for % the given value of snr_in_dB, signal to noise ratio in dB. N=100;

E=1; % energy per symbol snr=10^(snr_in_dB/10); % signal to noise ratio sgma=sqrt(E/snr)/2; % noise variance s00=[1 0]; s01=[0 1]; s11=[-1 0]; s10=[0 -1]; % signal mapping % generation of the data source numofsymbolerror=0; numofbiterror=0; counter=0;

while(numofbiterror<100) for i=1:N,

temp=rand; % a uniform random variable between 0 and 1

if (temp<0.25), % with probability 1/4, source output is \

dsource1(i)=0; dsource2(i)=0;

elseif (temp<0.5), % with probability 1/4, source output is \

dsource1(i)=0; dsource2(i)=1;

elseif (temp<0.75), % with probability 1/4, source output is \

dsource1(i)=1; dsource2(i)=0;

else % with probability 1/4, source output is \

dsource1(i)=1; dsource2(i)=1; end; end;

% detection and the probability of error calculation

for i=1:N,

% the received signal at the detection, for the ith symbol,is:

n=sgma*randn(1,2); % 2 normal distributed r.v with 0, variance sgma

if ((dsource1(i)==0) & (dsource2(i)==0)), r=s00+n;

elseif ((dsource1(i)==0) & (dsource2(i)==1)), r=s01+n;

elseif ((dsource1(i)==1) & (dsource2(i)==0)), r=s10+n; else

r=s11+n; end;

% The correlation metrics are computed below

c00=dot(r,s00); c01=dot(r,s01); c10=dot(r,s10); c11=dot(r,s11); % The decision on the ith symbol is made next c_max=max([c00,c01,c10,c11]);

if (c00==c_max), decis1=0; decis2=0; elseif (c01==c_max), decis1=0; decis2=1; elseif (c10==c_max), decis1=1; decis2=0; else decis1=1; decis2=1; end;

% Increment the error counter, if the decision is not correct symbolerror=0;

if (decis1~=dsource1(i)), numofbiterror=numofbiterror+1; symbolerror=1; end;

if (decis2~=dsource2(i)), numofbiterror=numofbiterror+1; symbolerror=1; end;

if (symbolerror==1), numofsymbolerror=numofsymbolerror+1; end; end

counter=counter+1; end

ps1=numofsymbolerror/(N*counter); % since there are totally N symbols

pb1=numofbiterror/(2*N*counter); % since 2N bits are transmitted

附录

参考文献: 1、《MATLAB 宝典》 陈杰等编著 电子工业出版社 2、《MATLAB信号处理》 刘波, 文忠, 曾涯编著 北京电子工业出版社 3、《数字信号处理的MATLAB实现》 万永革编著 北京科学出版社 4、网上资料

本文来源:https://www.bwwdw.com/article/znz.html

Top