通信系统模型.docx
- 文档编号:28672746
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:17
- 大小:355.71KB
通信系统模型.docx
《通信系统模型.docx》由会员分享,可在线阅读,更多相关《通信系统模型.docx(17页珍藏版)》请在冰豆网上搜索。
通信系统模型
通信系统模型
信源
信号源函数
SignalSources
randerr-Generatebiterrorpatterns.
randint-Generatematrixofuniformlydistributedrandomintegers.
randsrc-Generaterandommatrixusingprescribedalphabet.
seqgen.pn-Generatepseudorandomnoisesequences(Seealso:
SEQGENobjects).
wgn-GeneratewhiteGaussiannoise.
以randsrc(1,10,[01;0.50.5])为例
产生1*10的0、1矩阵,0、1出现的概率均为0.5;
此外Matlab产生随机数:
rand
rand(n):
生成0到1之间的n阶随机数方阵
rand(m,n):
生成0到1之间的m×n的随机数矩阵
randn
randn()命令是产生白噪声的,白噪声应该是0均值,方差为1的一组数;
同rand有randn(n),randn(m,n)
rand是0-1的均匀分布,randn是均值为0方差为1的正态分布
randint
randint(m,n,[1N]):
生成m×n的在1到N之间的随机整数矩阵,其效果与randint(m,n,N+1)相同。
Matlab随机数生成函数:
betarnd贝塔分布的随机数生成器
binornd二项分布的随机数生成器
chi2rnd卡方分布的随机数生成器
exprnd指数分布的随机数生成器
frndf分布的随机数生成器
gamrnd伽玛分布的随机数生成器
geornd几何分布的随机数生成器
hygernd超几何分布的随机数生成器
lognrnd对数正态分布的随机数生成器
nbinrnd负二项分布的随机数生成器
ncfrnd非中心f分布的随机数生成器
nctrnd非中心t分布的随机数生成器
ncx2rnd非中心卡方分布的随机数生成器
normrnd正态(高斯)分布的随机数生成器
poissrnd泊松分布的随机数生成器
raylrnd瑞利分布的随机数生成器
trnd学生氏t分布的随机数生成器
unidrnd离散均匀分布的随机数生成器
unifrnd连续均匀分布的随机数生成器
weibrnd威布尔分布的随机数生成器
Matlab取整:
(1)fix(x):
截尾取整.
>>fix([3.12-3.12])
ans=
3 -3
(2)floor(x):
不超过x的最大整数.(高斯取整)
>>floor([3.12-3.12])
ans=
3 -4
(3)ceil(x):
大于x的最小整数
>>ceil([3.12-3.12])
ans=
4 -3
(4)round(x):
四舍五入取整
>>round(3.12-3.12)
ans=
0
>>round([3.12-3.12])
ans=
3 -3
信源编译码
信源编码函数(效果:
提高有效性、降低可靠性,信道编码相反)
SourceCoding
arithdeco-Decodebinarycodeusingarithmeticdecoding.
arithenco-Encodeasequenceofsymbolsusingarithmeticcoding.
compand-Sourcecodemu-laworA-lawcompressororexpander.
dpcmdeco-Decodeusingdifferentialpulsecodemodulation.
dpcmenco-Encodeusingdifferentialpulsecodemodulation.
dpcmopt-Optimizedifferentialpulsecodemodulationparameters.
Huffmandeco-Huffmandecoder.
huffmandict-GenerateHuffmancodedictionaryforasourcewithknownprobabilitymodel.
huffmanenco-Huffmanencoder.
lloyds-OptimizequantizationparametersusingtheLloydalgorithm.
quantiz-Produceaquantizationindexandaquantizedoutputvalue.
以霍夫曼编码为例:
letters=[1:
6];%Distinctsymbolsthedatasourcecanproduce
p=[.5.125.125.125.0625.0625];%Probabilitydistribution
[dict,avglen]=huffmandict(letters,p);%GetHuffmancode.
sig=randsrc(1,20,[letters;p])%Createdatausingp.
comp=huffmanenco(sig,dict)%Encodethedata.
deco=huffmandeco(comp,dict)%Decodetheencodedsignal.
equal=isequal(sig,deco)%Checkwhetherthedecodingiscorrect.
调制解调
DigitalModulation/Demodulation(数字调制/解调函数)
dpskmod-Differentialphaseshiftkeyingmodulation.
dpskdemod-Differentialphaseshiftkeyingdemodulation.
fskmod-Frequencyshiftkeyingmodulation.
fskdemod-Frequencyshiftkeyingdemodulation.
genqammod-Generalquadratureamplitudemodulation.
genqamdemod-Generalquadratureamplitudedemodulation.
modnorm-Scalingfactorfornormalizingmodulationoutput.
mskmod-Minimumshiftkeyingmodulation.
mskdemod-Minimumshiftkeyingdemodulation.
oqpskmod-Offsetquadraturephaseshiftkeyingmodulation.
oqpskdemod-Offsetquadraturephaseshiftkeyingdemodulation
pammod-Pulseamplitudemodulation.
pamdemod-Pulseamplitudedemodulation.
pskmod-Phaseshiftkeyingmodulation.
pskdemod-Phaseshiftkeyingdemodulation.
qammod-Quadratureamplitudemodulation.
qamdemod-Quadratureamplitudedemodulation.
以BPSK为例:
x=[01011011];
scatterplot(pskmod(x,2,0));%Bpsk调制并画星座图,初始相位为0
pskdemod(pskmod(x,2,0),2);%解调
s=(x*2-1);%BPSK调制
c=(s>0);%BPSK解调
以QPSK为例:
functionModulateSignal=QPSKModulate(SignalData)
data=SignalData;
forjdata=1:
size(data,1)
m=1;
foridata=1:
size(data,2)/2%QPSKmodulation
packet(1:
2)=[data(jdata,2*idata-1),data(jdata,2*idata)];
ifpacket==[0,0]
symbol(jdata,m)=i;
elseifpacket==[0,1]
symbol(jdata,m)=1;
elseifpacket==[1,0]
symbol(jdata,m)=-1;
elseifpacket==[1,1]
symbol(jdata,m)=-i;
end
m=m+1;
end;
end
ModulateSignal=symbol;
信道编译码
卷积码及维特比译码
(2,1,3)卷积码
function[ConvolutionalCode,Trellis]=ConvolutionalEncoding(SourceCode)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%该函数实现(2,1,3)卷积编码
%%%%其中SourceCode为要编码的原始序列
%%%%ConvolutionalCode为编好的码字
%%%%Trellis为网格表示
%zjm
%Version1.00
%2010-11-25
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%第一个参数为约束长度。
第二个参数为输入说出关系
Trellis=poly2trellis(3,[75]);%(2,1,3)卷积码的网格表示,g1=[111];g2=[101];
ConvolutionalCode=convenc(SourceCode,Trellis);%卷积编码
functionDecodedCode=ConvolutionalDecoding(EncodedCode)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%该函数实现(2,1,3)卷积译码
%%%%其中EncodedCode为要译码的序列
%%%%DecodedCode为译好的码字
%zjm
%Version1.00
%2010-11-25
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Trellis=poly2trellis(3,[75]);%(2,1,3)卷积码网格表示
DecodedCode=vitdec(EncodedCode,Trellis,3,'trunc','hard');%维特比译码,硬判决
分组码:
>>x=encode([1011],7,4,'hamming');
>>y=decode(x,7,4,'hamming');
信道
瑞利(莱斯)衰落信道
复数信号:
瑞利衰落信道(Rayleighfadingchannel)是一种无线电信号传播环境的统计模型。
这种模型假设信号通过无线信道之后,其信号幅度是随机的,即“衰落”,并且其包络服从瑞利分布。
在无线通信信道环境中,电磁波经过反射折射散射等多条路径传播到达接收机后,总信号的强度服从瑞利分布。
同时由于接收机的移动及其他原因,信号强度和相位等特性又在起伏变化,故称为瑞利衰落。
两个正交高斯噪声信号之和的包络服从瑞利分布。
单输入单输出系统Rayleigh衰落信道可以建模为:
y=hx+n;其中h=(randn+jrandn)/sqrt
(2);
h=(randn(1,10)+i*randn(1,10))/sqrt
(2);
产生幅值均值为1,服从瑞利分布1*10的矩阵。
实数信号:
在matlab中rayleigh信道的随机数可以由random函数或者raylrnd产生,归一化之后为
h=raylrnd(1,1,10)/sqrt(pi/2);
h=random('rayl',1,1,10)/sqrt(pi/2);
产生均值为1,服从瑞利分布1*10的矩阵
瑞利分布是赖斯分布的特例
当发送端到接收端没有一条直射路径的信道是瑞利信道,有一条的是莱斯信道
Rice分布的随机变量h可以建模为
h=直射分量+ rayleigh随机变量
首先确定K因子,即直射分量(常数)与rayleigh随机变量的能量比
K=直射分量能量/rayleigh能量
根据信道归一化要求E{|h|^2}=1,h可以归一化为如下所示:
h=sqrt(K/(K+1))+sqrt(1/(K+1))*rayleigh随机变量。
根据上式产生信道增益即可。
h=rayleighchan(ts,fd,td,pd);
h=ricianchan(ts,fd,k);
其中ts是信道的采样周期,fd为多普勒频移、td为各径时延组成的矢量、pd为各径衰减组成的矢量;k是rician分布中的k因子。
通过上述命令和对应参数即可获得需要的rayleigh信道或rician信道,采用y=filter(h,x),即可将信道的影响加在输入的数据x上。
AWGN信道:
MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。
WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。
1.WGN:
产生高斯白噪声
y=wgn(m,n,p)产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
y=wgn(m,n,p,imp)以欧姆(Ohm)为单位指定负载阻抗。
y=wgn(m,n,p,imp,state)重置RANDN的状态。
在数值变量后还可附加一些标志性参数:
y=wgn(…,POWERTYPE)指定p的单位。
POWERTYPE可以是'dBW','dBm'或'linear'。
线性强度(linearpower)以瓦特(Watt)为单位。
y=wgn(…,OUTPUTTYPE)指定输出类型。
OUTPUTTYPE可以是'real'或'complex'。
Togeneratea1-by-10vectorofcomplexnoisewithpowerof3Wattsacrossa75Ohmload,use:
Y=WGN(1,10,3,75,'linear','complex');
2.AWGN:
在某一信号中加入高斯白噪声
y=awgn(x,SNR)在信号x中加入高斯白噪声。
信噪比SNR以dB为单位。
x的强度假定为0dBW。
如果x是复数,就加入复噪声。
y=awgn(x,SNR,SIGPOWER)如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。
y=awgn(x,SNR,SIGPOWER,STATE)重置RANDN的状态。
y=awgn(…,POWERTYPE)指定SNR和SIGPOWER的单位。
POWERTYPE可以是'dB'或'linear'。
如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。
如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。
TocauseAWGNtomeasurethepowerofX,setRANDNtothe1234thstateandaddnoisetoproducealinearSNRof4,use:
X=sqrt
(2)*sin(0:
pi/8:
6*pi);
Y=AWGN(X,4,'measured',1234,'linear');
注释
1.分贝(decibel,dB):
分贝(dB)是表示相对功率或幅度电平的标准单位,换句话说,就是我们用来表示两个能量之间的差别的一种表示单位,它不是一个绝对单位。
例如,电子系统中将电压、电流、功率等物理量的强弱通称为电平,电平的单位通常就以分贝表示,即事先取一个电压或电流作为参考值(0dB),用待表示的量与参考值之比取对数,再乘以20作为电平的分贝数(功率的电平值改乘10)。
2.分贝瓦(dBW,dBWatt):
指以1W的输出功率为基准时,用分贝来测量的功率放大器的功率值。
3.dBm(dB-milliWatt):
即与1milliWatt(毫瓦)作比较得出的数字。
0dBm=1mW
10dBm=10mW
20dBm=100mW
也可直接用randn函数产生高斯分布序列,例如:
程序代码
y=randn(1,2500);
y=y-mean(y);%减去均值
y=y/std(y);%除以标准差
a=0.0128;%均值
b=sqrt(0.9596);%标准差
y=a+b*y;
%==========================zjmwolf==================================%
1) rand产生的是[0,1]上的均匀分布的随机序列
2) randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列;
%===================================================================%
也就是说,可以直接使用上面两个函数对原始信号添加噪声(例如y=x+rand(length(x),1)或者y=x+randn(length(x),1))
事实上,无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。
即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。
下面就我熟悉的“向已知信号添加某个信噪比(SNR)的高斯白噪声”来说明一下,不过如果大家阅读过awgn的实现代码就不用看下去了,呵呵。
从上述可知,这个任务可以使用awgn函数实现,具体命令是:
awgn(x,snr,’measured’,'linear’),命令的作用是对原信号f(x)添加信噪比(比值)为SNR的噪声,在添加之前先估计信号f的强度。
这里涉及三个问题:
在awgn这个函数中,SNR是如何计算的?
什么是信号的强度?
awgn函数具体是如何添加噪声的?
事实上,前两个问题是相关的,因为根据定义,SNR就是信号的强度除以噪声的强度,所以,首先来讲讲信号的强度。
其实信号的强度指的就是信号的能量,在连续的情形就是对f(x)平方后求积分,而在离散的情形自然是求和代替积分了。
在matlab中也是这样实现的,只不过多了一个规范化步骤罢了:
sigPower=sum(abs(sig(:
)).^2)/length(sig(:
))
这就是信号的强度。
至此,SNR的具体实现也不用多说了(注:
由于采用的是比值而非db,所以与下面“计算信噪比”所使用的方式不同,即没有求对数步骤)。
最后说说awgn函数具体是如何添加噪声的。
事实上也很简单,在求出f的强度后,结合指定的信噪比,就可以求出需要添加的噪声的强度noisePower=sigPower/SNR。
由于使用的是高斯白噪声即randn函数,而randn的结果是一个强度为1的随机序列(自己试试sum(randn(1000,1).^2)/1000就知道了,注意信号的长度不能太小)。
于是,所要添加的噪声信号显然就是:
sqrt(noisePower)*randn(n,1),其中n为信号长度。
误码率计算
%ThisprogrammeshowshowtocaculatetheBER
%author:
zjm
%date:
2011.3.17
%txDataistransmitdatawhichisa1*1000matrixwith0,1randomly
%rxDataisreceivedatawhichisa1*1000matrixwith0,1ralatedwithtxData
%BERisthebiterrorrate
%SNR=10;
clear;
clc;
dataLength=100000;
maxSNR=20;
forSNR=1:
maxSNR
txData=round(rand(1,dataLength));
rxData=round(awgn(txData,SNR));
errorNo=sum(xor(txData,rxData));
BER(SNR)=errorNo/dataLength;
end
semilogy(1:
maxSNR,BER,'r-*');
例
1、信源及卷积编译码
附件1卷积
2、假定某系统采用了跳频和简单编码(7,4)汉明码,该码的生成矩阵为:
采用BPSK调制,试计算存在跳频和不存在跳频时的误码率。
一个交织器将每个符号映射到交替变化的频率上(有7个可用频率)。
每个频率上都存在彼此独立的瑞利衰落。
假设接收机采用硬判决译码。
使用matlab画出误码率作为平均SNR函数的曲线。
修改程序如下:
%--chap.18,prob2----
clearall;
N=100000;%TransmitNsymbolsateachSNR
BF_length=7;%assumingblockfadingwithcorrelationtimeof7symbols
foriSNR=1:
11
snr(iSNR)=iSNR-1;%SNRindB
%--CodingandBPSKModulationN0/2=1forAWGN----
A=sqrt(2*(10^(snr(iSNR)/10)));
din=randint(1,N);%Source,originalsignalx
x=encode(di
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 系统 模型