通信系统的计算机模拟第十三讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
两个蒙特卡罗实例
将蒙特卡罗方法用于估计数字通信系统的误比特率时, 是让N个采样符号通过系统的仿真模型,并计算产生差 错的个数来实现的
假设符号导致了Ne个差错,那么误比特率的估计值为 Ne ˆ PE N
是一个随机变量,要获得误比特率的准确估 计,估计器必须是无偏,并具有小的方差,小的方差要 求有大的N,而这又会导致较长的计算时间。
3
Solution
第一个问题是要确定delay的值 最妙的方法是,把调制器的输 入和接收机的输出进行互相关 。 在进行半解析仿真时我们会采 用这种方法。 为了说明正确选择时延值的重 要性,具体来说,我们会选定 一个值,用不同的 delay 值对系 统进行仿真,并观察结果
4
Matlab Program
% % Generate transmitted symbols. % [SymbolSamples,TxSymbols] = random_binary(BlockSize,SamplesPerSymbol); % % Transmitter filter if desired. % if FilterSwitch==0 TxOutput = SymbolSamples; else [TxOutput,TxFilterState] = filter(BTx,ATx,SymbolSamples,TxFilterState); end % % Generate channel noise. % NoiseSamples = NoiseSigma*randn(size(TxOutput)); % % Add signal and noise. %
EbNodB = 6; % Eb/No (dB) value z = 10.^(EbNodB/10); % convert to linear scale delay = 0:8; % delay vector BER = zeros(1,length(delay)); % initialize BER vector Errors = zeros(1,length(delay)); % initialize Errors vector BER_T = q(sqrt(2*z))*ones(1,length(delay)); % theoretical BER vector N = round(100./BER_T); % 100 errors for ideal (zero ISI) system FilterSwitch = 1; % set filter switch (in=1 or out=0) for k=1:length(delay) [BER(k),Errors(k)] = c10_MCBPSKrun(N(k),z,delay(k),FilterSwitch) end semilogy(delay,BER,'o',delay,BER_T,'-'); grid; xlabel('Delay'); ylabel('Bit Error Rate');
通信系统的蒙特卡罗仿真
来自百度文库
相移键控(Phase-shift Keying, PSK)数字通信系统,尽管非常 简单,基本构建模块,差分QPSK系统的仿真,其中考虑了相位 和符号同步误差的影响。 讨论半解析(SA)方法,即把蒙特卡罗仿真和解析的方法结合 在一起。
蒙特卡罗方法几乎不需要任何的数学分析,只要系统方框图中每 个功能模块的信号处理算法是已知的就能应用
5
Result
AWGN环境下的理想 系统(没有ISI)在 Eb/N0=6dB时的性能
6
function [BER,Errors]=MCBPSKrun(N,EbNo,delay,FilterSwitch) SamplesPerSymbol = 10; % samples per symbol BlockSize = 1000; % block size NoiseSigma = sqrt(SamplesPerSymbol/(2*EbNo)); % scale noise level DetectedSymbols = zeros(1,BlockSize); % initialize vector NumberOfBlocks = floor(N/BlockSize); % number of blocks processed [BTx,ATx] = butter(5,2/SamplesPerSymbol); % compute filter parameters [TxOutput,TxFilterState] = filter(BTx,ATx,0); % initialize state vector BRx = ones(1,SamplesPerSymbol); ARx=1; % matched filter parameters Errors = 0; % initialize error counter % % Simulation loop begine here. % 7 for Block=1:NumberOfBlocks
2
ˆ P E
例10-1(PSK)
假设为BPSK调制,信号星座中的两个信 号点都位于直接(同相)信道上(回顾一 下例9-3),根据这一假设,在仿真中我们 可以不考虑正交信道。 假设调制器输出端的滤波器是三阶巴特沃 思滤波器,其带宽等于比特率(BW=rb) ,该滤波器会产生码间干扰(ISI)。 仿真的目的是确定由滤波器带来的ISI所增 加的误比特率。 这里采用了块级联(block-serial)的方法 ,迭代处理由1000个符号组成的块,直到 处理完所有N个符号。 这样做主要是为了利用MATLAB内置的函 数filter,它可以实现时域卷积。它作为内 置函数具有非常高的运行效率,可大大地 减少仿真时间。注意必须保证滤波器的输 出在块与块之间是连续的,这是通过使用 filter提供的初始条件参数来实现的。
蒙特卡罗仿真是一个很通用的工具,缺点是仿真运行时间长,半 解析方法需要更高水平的分析,降低了仿真运行时间。
运行一次蒙特卡罗仿真得到的是单个误比特率估计值,而半解析 仿真得到的是以为Eb/N0函数的完整的误比特率曲线,半解析仿 真不是一个普遍适用的方法,仅适用于一类很有限的系统,半解 析仿真消耗的机时是微不足道的,因此在能运用半解析仿真时, 1 都应优先考虑这种方法。