QPSK仿真实现要点

QPSK仿真实现要点
QPSK仿真实现要点

基于MATLAB的QPSK仿真设计与实现

一、摘要

本次方向设计根据当今现代通信技术的发展,对QPSK信号的工作原理进行了仿真分析。并结合调制解调的基本性能和通信原理的基础知识,利用MATLAB 仿真工具设计出一个QPSK仿真程序,以衡量QPSK在理想信道、高斯白噪声信道和先通过瑞利衰落信道再通过高斯信道三种方式的调制解调得到的功率谱密度、噪声曲线、星座图及误码性能,并对仿真结果进行了分析。

关键字:MATLAB仿真;QPSK调制;QPSK解调;误码率;信噪比

Based on the modern communication technology, design of oriented major has implemented a simulated analysis in regard to the principle of QPSK signal. Associating with the performance of design of oriented major and underpinning communication knowledge, a QPSK simulate program was implemented and analysed in the aim of measuring its power spectral density,curve of noise,constellation and bit error performance under ideal channel, white Gaussian noise channel and via Rayleigh fading channel and white Gaussian noise channel respectively。

Key words:MATLAB Simulate; QPSK Modulation; QPSK Demodulation; Error Rate; Signal to Noise Ratio

二、设计目的和意义

近年来,软件无线电作为解决通信体制兼容性问题的重要方法受到各方面的注意。它的中心思想是在通用的硬件平台上,用软件来实现各种功能,包括调制解调类型、数据格式、通信协议等。通过软件的增加、修改或升级就可以实现新的功能,充分体现了体制的灵活性、可扩展性等。其中软件的增加、高频谱效率的调制解调模块是移动通信系统的关键技术,它的软件化也是实现软件无线电的重要环节。

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

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

三、设计原理

四相相移键控信号简称“QPSK”。它分为绝对相移和相对相移两种。由于绝对相移方式存

在相位模糊问题,所以在实际中主要采用相对移相方式QDPSK。它具有一系列独特的优点,目前已经广泛应用于无线通信中,成为现代通信中一种十分重要的调制解调方式。在数字信号的调制方式中QPSK四相移键控是目前最常用的一种卫星数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。

数字相位调制PSK是角度调制、恒定幅度数字调制的一种方式,通过改变发送波的相位来实现,除了其输入信号是数字信号以及输出的相位受限制以外,PSK与传统的相位调制相似。

QPSK信号的正弦载波有4个可能的离散相位状态,每个载波相位携带2个二进制信号。

QPSK利用载波的四种不同相位来表征数字信息。因此,对于输入的二进制数字序列应该进行分组,将每两个比特编为一组;然后用四种不同的载波相位去表征它们。例如,若输入二进制数字信息序列为10110100,则可将它们分成10,11,01,00,然后用四种不同的相位来分别表示它们。由于每一种载波相位代表2个比特信息,故每个四进制码元又被称为双比特码。

四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。QPSK是在M=4时的调相技术,它规定了四种载波相位,分别为45°,135°,225°,315°,调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两个比特分成一组,共有四种组合,即00,01,10,11,其中每一组称为双比特码元。每一个双比特码元是由两位二进制信息比特组成,它们分别代表四进制四个符号中的一个符号。QPSK 中每次调制可传输2个信息比特,这些信息比特是通过载波的四种相位来传递的。解调器根据星座图及接收到的载波信号的相位来判断发送端发送的信息比特。

数字调制用“星座图”来描述,星座图中定义了一种调制技术的两个基本参数:(1)信号分布;(2)与调制数字比特之间的映射关系。星座图中规定了星座点与传输比特间的对应关系,这种关系称为“映射”,一种调制技术的特性可由信号分布和映射完全定义,即可由星座图来完全定义。

同时QPSK信号可以看作两个载波正交2PSK信号的合成,下图表示QPSK正交调制器。

图1、QPSK调制系统原理图

由QPSK信号的调制可知,对它的解调可以采用与2PSK信号类似的解调方法进行解调。解调原理图如下所示,同相支路和正交支路分别采用相干解调方式解调,得到()

I t和()

Q t,经过抽样判决和并/串交换器,将上下支路得到的并行数据恢复成串行数据。

原理分析:

基本原理及系统结构

连续相位QPSK可表示为

S QPSK(t)=A

其中,为随时间连续变化的相位,f c为未调载波频率,A为已调信号幅度,由2FSK 信号正交条件可知,最小频差为

这里f1,f2分别为2FSK信号的两个频率,T S为信号码元间隔,T b为二进制信息的间隔。此时有

f c=1/2(f1+f2)

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

其中,i=1,2,2,4;E为发射信号的每个符号的能量,T为符号持续时间,载波频率f 等于nc/T,nc为固定整数。每一个可能的相位值对应于一个特定的二位组。例如,可用前述

的一组相位值来表示格雷码的一组二位组:10,00,01,11。

下面介绍QPSK 信号的产生和检测。如果a 为典型的QPSK 发射机框图。输入的二进制数据序列

首先被不归零(NRZ )电平编码转换器转换为极性形式,即负号1和0示。接着,该二进制波形被分接器分成两个分别由输入序列的奇数位偶数位组成的彼此独立的二进制波形,这两个二进制波形分别用a1(t ),和a2(t )表示。容易注意到,在任何一信号时间间隔内a1(t ),和a2(t )的幅度恰好分别等于Si1和 Si2,即由发送的二位组决定。这两个二进制波形a1(t ),和a2(t )被用来调制一对正交载波或者说正交基本函数:φ1(t )

)c f t π,φ2(t )c f t π。这样就得到一对二进制PSK 信号。φ1(t )和

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

图2、QPSK 解调系统原理图

四、 详细设计步骤

实验内容

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中所要求的误码

性能曲线在同一坐标比例下绘制

QPSK调制的实现:QPSK的调制部分由电平变换,串/并变换,相乘器与相加器组成。将把原始信号按1->1,0->-1变换,之后再进行穿并变换。由于输入的串行的二进制信号,要对其进行QPSK调制,要完成的就是把串行信号变换成并行信号。信号通过平衡调制,在这里可以当作一个乘法器来进行处理。再把两路信号通过加法器叠加起来则是原信号经调制后的输出波形。

QPSK解调的实现:QPSK的解调部分由相乘器,低通滤波器,抽样判决,并/串变换组成。在解调QPSK的时候,首先会将受到的信号分为相同的两路在将这两路信号分别经过乘法器得到出去的信号波形。

抽样判决时,首先要确定门限值,即如果该抽样值大于等于门限值,则为1,否则为0。

实现串/并变换时,是将原数组的奇数位赋予数组a,偶数位赋予数组b。

实验工具:MATLAB

MATLAB是一套功能强大的工程技术数值运算和系统仿真软件,它具有数值运算和系统仿真软件,它具有数值分析、矩阵运算、数字信号处理、仿真建模、系统控制盒优化等功能。MATLAB 的编程功能简单,并且很容易扩展和创造新的命令与函数。

随着通信系统复杂性的增加,传统的手工分析与电路板试验等分析设计方法已经不能适应发展的需要,通信系统计算机模拟仿真技术日益显示出其巨大的优越性。计算机仿真是根据被研究的真实系统的模型,利用计算机进行实验研究的一种方法。它具有利用模型进行仿真的一系列优点,如费用低易于进行真实系统难于实现的各种试验,以及易于实现完全相同条件下的重复试验等。MATLAB仿真软件就是分析通信系统常用的工具之一。

MATLAB作为一种功能强大的数据分析和工程计算高级语言,已被广泛应用于现代科学技术研究和工程设计的各个领域。其信号处理工具箱可以解决通信中信号变换、调制解调、滤波、频谱估计、线性系统分析等多项功能,并且能够通过图形用户界面显示结果。MATLAB包括许多标准函数,每个函数都由完成某一特定功能的代码组成,同时,MATLAB也允许用户自行写所需的函数,其扩展名为.m,称为M文件与M函数。通过流程控制和函数语句来实现特定功能,并可利用图形显示结果。

MATLAB主要优点有很多,首先编程效率高,它是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序。因此,MATLAB语言也可通俗的称为演算纸式科学算法语言由于它编写简单,所以编程效率高,易学易懂。其次,用户使用方便。MATLAB语言是一种解释执行的语言,它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少,扩充能力

强,MATLAB语言有丰富的库函数,在进行复制的数学运算时可以直接调用。

MATLAB语句简单,内涵丰富,它有高效方便的矩阵和数组、运算。MATLAB语言像Basic 和C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变地照搬到数组间的运算。

程序见附录

五、设计结果及分析

根据图1和图2的流程框图设计仿真程序,得出结果并且分析如下:

5.1、理想信道下的仿真,实验结果如图3所示:

图3

实验结果分析:

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

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

图4

图5 实验结果分析:

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

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

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

图6

图7

图8

实验结果分析:

由图7可以得到瑞利衰落信道前后的星座图,调制信号的曲线图及其功率谱密度。最后图8显示的是高斯信道和瑞利衰落信道的误码率对比。由图可知瑞利衰落信道下的误码率比高斯信道下的误码率高。

至此,仿真实验就全部完成。

六、总结

由此次仿真实验可知,由于高斯信道和瑞利信道的影响,波形发生了明显的变化,功率谱密度也发生变化,星座图可反映在噪声影响下产生的误码。从仿真解调前与调制后的图对比可知仿真正确。通过图8可知瑞利信道下的误码率和误比特率明显高于高斯信道,并与理论值基本符合。

随着通信事业的发展,通信系统的设计也会越来越复杂,通过计算机的仿真,可以大大地降低通信过程实验成本。本文设计出一个QPSK仿真模型,以衡量QPSK在理想信道,高斯白噪声信道,以及先通过瑞利再通过高斯信道的性能,通过仿真,可以更好地了解QPSK系统的工作原理,而且为硬件的研制提供一定的参考作用。

七、体会

这次的通信专业方向设计让我把通信原理的一些内容又重新复习了一遍,中间出了很多问

题,比如用matlab7.0版本就不能把几个图整合到一起,也就是不能使用subplot函数,会出现Undefined function or variable "hanalysisparammenu"的错误.而我后来又换成了matlab7.8就可以实现该功能。我把程序发给老师后老师狠狠的教育了我,不应该依靠高版本的优化功能把在低版本不能实现的功能强制执行,所以我还有很多地方需要学习,包括对误码率进行计算的两个函数我也是借鉴的网上的程序。这次方向设计让我学会了很多,也认识到了自己还有很多方面的欠缺。

八、参考文献

[1] 李人厚、张平安.精通MATLAB,西安交通大学1997.3

[2] 肖明波,通信系统仿真原理与无线应用机械工业出版社

[3] 万永革编著,通信系统仿真原理与无线应用,北京科学出版社

[4] 郭文彬、桑林,通信原理—基于MATLAB的计算机仿真,北京邮电大学出版社,2006.1

[5]网上资料

附件:

主程序:

T=1; % 基带信号宽度,也就是频率

fc=10/T; % 载波频率

ml=2; % 调制信号类型的一个标志位

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;

datanrz=data.*2-1;

data1=zeros(1,nb/delta_T);

for q=1:nb

data1((q-1)/delta_T+1:q/delta_T)=datanrz(q);

end

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

idata=datanrz(1:ml:(nb-1));

qdata=datanrz(2:ml:nb);

% QPSK信号的调制

ich=zeros(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;

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);

qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0

for n=1:nb/2

if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0

idata3(n)=1;

else idata3(n)=0;

end

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);

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_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);

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;

%---------------------------- 输出显示部分

% 第一部分(理想)

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]);

figure(3)

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(4)

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)');

figure(5)

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

figure(6)

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');

cm_sm32()用于瑞利信道误码率的计算:

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 "00"

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

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

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

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

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

else % with probability 1/4, source output is "11"

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

cm_sm33()用于高斯信道误码率的计算:

function [pb1,ps1]=cm_sm33(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 "00"

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

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

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

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

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

else % with probability 1/4, source output is "11"

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

模拟信号数字化传输系统的设计与仿真分析

唐山学院 通信原理课程设计 题目模拟信号数字化传输系统的设计与仿真分析系 (部) 班级 姓名 学号 指导教师 2017 年 6 月 26 日至2017 年7月 8 日共 2 周

通信原理课程设计任务书 一、设计题目、内容及要求 设计题目:模拟信号数字化传输系统的设计与仿真分析 内容及要求: 1.了解Matlab/Simulink的运行环境及应用领域; 2.逐步熟悉模拟信号数字化传输系统的仿真过程,由简到难; 3.系统仿真及波形分析 (1) 模拟信号抽样过程原理与仿真分析; (2) 模拟信号量化过程原理与仿真分析; (3) PCM编译码系统设计与仿真分析; (4) DPCM编译码系统设计与仿真分析。 (5) 在高斯信道下对PCM系统的性能进行仿真分析。(可选) 二、设计原始资料 通信原理;软件Matlab;计算机一台 三、要求的设计成果(课程设计说明书、设计实物、图纸等) 设计说明书1份,不少于2000字,应包含模拟信号数字化传输系统原理、相关系统设计、相关软件Matlab/Simulink介绍、系统仿真及波形分析。 四、进程安排 第1-2天课设理论讲解及仿真软件介绍、学生练习使用软件 第3-4天相关系统设计 第5-6天系统仿真及波形分析 第7-8天整理、撰写说明书 第9-10天进行测试或答辩 五、主要参考资料 [1]樊昌信、曹丽娜.通信原理.北京:国防工业出版社,2006 [2]刘学勇.详解MATLAB/Simulink通信系统建模与仿真.北京:电子工业出版社,2011 [3]邵玉斌.MATLAB/Simulik通信系统建模与仿真实例分析.北京:清华大学出版社,2008 [4]张水英,徐伟强.通信原理及MATLAB/Simulink仿真.北京:人民邮电出版社,2012 [5]邵佳,董辰辉. MATLAB/Simulink通信系统建模与仿真实例精讲.北京:电子工业出版社,2009 指导教师(签名):教研室主任(签名):

JAVA洗衣机仿真程序实验报告及代码

一.实验题目:用java编写洗衣机仿真程序 二.实验目的: 1.熟悉并掌握洗衣机(全自动)的工作原理和运行过程. 2.学会软件工程设计中的一系列分析研究,对需求分析,可行性研究,软件 模型等有一定的了解,为以后的软件设计工作打下良好的基础。 3.通过的洗衣机仿真系统的编写与学习,加深了对Java这门语言的了解, 对其中的类的设计,类之间的关系,界面的设计(按钮及布局的设计)有了更深的了解与体会,为Java的学习做好准备工作。 三.实验要求: 了解全自动洗衣机的简单工作过程及实现。其中包括,洗衣的方式(标准或是柔和)、洗衣中的水位选择(高水位洗衣、低水位洗衣等)等方面需要在人们将衣服放入洗衣机洗衣服之后手动来选择;并且是必须选择的洗衣参数。当选择了一种洗衣参数后,按下启动按钮,洗衣机就会自动完成洗衣服的整个过程。在满足基本功能以外,还需要尽量考虑外观、造型、节水等方面的设计,符合人机界面的基本要求。 四.实验分析: 1.洗衣机需求分析: 标准清洗:浸泡/清洗/甩干 快速清洗:清洗/甩干 大件衣物(冬衣,牛仔类):浸泡(温水,延长浸泡/清洗(延长筒转时间)/甩干床单,窗帘类:浸泡(温水)/清洗 根据衣物的不同用按钮选择上述洗衣模式即可.其中甩干可选可不选. 尽量设计了一个节水功能,可以实现水回收.在无需甩干时水不流走,余下的水可做其他用途,实现节水. 2.主要的类实现 (1).继承类 (2).包括进水,排水,洗涤,漂洗,甩干等成员函数 (3).水位的选择通过参数传递决定进水函数 (4).其余通过调用筒的转动函数(run)并通过一定的参数控制实现

3.程序设计步骤 ≡≥选择水温 ≡≥放入衣物 ≡≥选择洗衣模式 ≡≥脱水 ≡≥排水 ≡≥烘干 ≡≥关闭 五.设计与实现过程: 1.洗衣机类的部分实现: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Washing extends JApplet{ private JFrame jf; private JButton jb1,jb2,jb3,jb4,jb5,jb6; public static void main(String[] args){ Washing flowTest=new Washing(); flowTest.setSize(270,160); flowTest.go(); //flowTest.show(true); } public void go(){ jf=new JFrame("洗衣机功能模拟器"); Container cp=jf.getContentPane(); cp.setLayout(null); jb1=new JButton("入水"); jb2=new JButton("加衣"); jb3=new JButton("脱水"); jb4=new JButton("排水"); jb5=new JButton("烘干"); jb6=new JButton("关闭"); // Container cp=jf.getContentPane(); // cp.setLayout(new BorderLayout()); jb1.setBounds(10, 10, 80, 80); cp.add(jb1); //指定组件追加到这个容器的末尾。这是一个方便的方法为addImpl。 //注意:如果一个组件已被添加到一个已显示的容器,验证必须在该容器调用,以显示新的组件。如果正在添加多个组件,你可以通过调用验证只有一次,已添加的所有组件后提高效率。 jb2.setBounds(110, 10, 80, 80); cp.add(jb2);

单片机课设(三篇课设均带带仿真图和源程序代码)

12232 LCD PROTEUS仿真(51C) 12232在proteus 里模型用关键字P ,“12232”查不出LCD的,要用1232 查找。 好不容易得到模型,编写程序,一直不能成功。第一个字符正常,后面的就乱了。最后才明白:12232的模型和实物不一样,共4页(这和实物一样),每页只能从地址0开始,水平方向从左往右显示。另外,按实物的程序,仿真中显示是相反的,所以初始化时应改为反向显示,仿真显示才正常。 //12232LCD proteus仿真 //2012 01 20 E:\DPJ_C\12232\12232UV4\12232_2C.C #include #include #include"chr16.h" #define uchar unsigned char #define uint unsigned int #define LCD_DB P0 sbit E2=P3^5; sbit E1=P3^6; sbit A0=P3^7; void WR_Mcom(uchar i) { E1=1; _nop_();

A0=0; _nop_(); _nop_(); LCD_DB=i; _nop_(); _nop_(); E1=0; _nop_(); _nop_(); } void WR_Mdat(uchar i) { E1=1; _nop_(); _nop_(); A0=1; _nop_(); _nop_(); LCD_DB=i; _nop_(); _nop_(); E1=0; _nop_(); _nop_(); } void WR_Scom(uchar i) { A0=0; _nop_(); _nop_(); E2=1; _nop_(); _nop_(); LCD_DB=i; _nop_(); _nop_(); E2=0; _nop_();

Keil Monitor-51仿真板的制作与使用

Keil Monitor-51仿真板的制作与使用 摘要: 介绍支持Keil C51的Monitor-51仿真板硬件电路及监控程序的生成方法,对使用中常出现的问题给出了解决方法。 关键词: 单片机 C语言仿真板监控程序 MCS-51单片机在我国应用最为广泛、经久不衰。以往单片机应用程序主要用汇编语言编写。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难。为了提高编制单片机应用程序的效率,改善程序的可读性和可移植性,采用高级语言无疑是一种最好的选择。C语言是一种通用的计算机程序设计语言,既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,表达和运算能力也较强,许多以往只能采用汇编语言来解决的问题现在都可以改用C语言解决。德国Keil Software公司多年来致力于单片机C语言编译器的研究。该公司开发的Keil C51是一种专为8051单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言相媲美。 近年来,Keil C51不断升级,目前最高版本为V6.20。高版本的Keil C51编译器,尤其是Keil μVision2 (基于Windows的C51集成编译环境)以其性能优越、使用方便,受到了众多单片机爱好者的欢迎。Keil C51以软件包的形式向用户提供主要包括C51交叉编译器、A51宏汇编器、BL连接定位器等一系列工具和μVision2、软件仿真器dScope51等开发平台。C51具有丰富的函数库,包含100多种功能函数,为用户编程提供了极大的方便。C51程序可以实现与汇编语言的接口,两者相互之间的调用十分方便。 但目前支持高版本Keil C51编程的仿真器不多,且价格较高。为此Keil C51提供了Monitor-51仿真板的制作方法,但无完整的硬件电路图,软件设置也比较繁琐。也有关于自制Monitor-51仿真板的专门讨论,有很多爱好者在制作仿真板时遇到一些问题,当然也有成功者。笔者也是Keil C51的用户,并成功自制了Monitor-51仿真板,有一些心得。本文提供了Monitor-51仿真板的硬件电路,并对其进行了分析,详细说明了监控程序的生成方法,对使用中常出现的问题给出了解决方法。 1 硬件电路 Monitor-51仿真板的硬件资源要求如下: ·5K字节的程序存储空间,用于存放监控程序; ·256字节的外部数据存储单元(系统需要)和可选的5K字节的跟踪缓冲区; ·足够大的外部数据存储空间用于装载完整的用户应用程序; ·串行口及一个用作波特率发生器的内部定时器; ·6字节的堆栈空间,用于用户程序的测试; ·如果用户程序大于64K字节,P1口的部分引脚要用于程序存储空间扩展; ·其它资源均可为应用程序所用。 根据以上要求,笔者设计的Monitor-51仿真板电路原理如图1。 需要说明的是,图1中存放用户程序的32K字节外部数据存储器62256的是将CPU的称为von Neumann接法。此时外部数据存储器在就相当于外部程序存储器,当然监控程序的存放地址空间不能与这种接法的外部数据存储空间相重复。von Neumann接法的另一个作用是调试时可以在用户程序代码中设置断点,监控程序修改用户程序代码在所有的断点处插入ACALL指令。

电力系统仿真软件介绍

电力系统仿真软件 电力系统仿真软件简介 一、PSAPAC 简介: 由美国EPRI开发,是一个全面分析电力系统静态和动态性能的软件工具。 功能:DYNRED(Dynamic Reduction Program):网络化简与系统的动态等值,保留需要的节点。 LOADSYN(Load Synthesis Program):模拟静态负荷模型和动态负荷模型。 IPFLOW(Interactive Power Flow Program):采用快速分解法和牛顿-拉夫逊法相结合的潮流分析方法,由电压稳态分析工具和不同负荷、事故及发电调度的潮流条件构成。 TLIM(Transfer Limit Program):快速计算电力潮流和各种负荷、事故及发电调度的输电线的传输极限。 DIRECT:直接法稳定分析软件弥补了传统时域仿真工作量大、费时的缺陷,并且提供了计算稳定裕度的方法,增强了时域仿真的能力。 LTSP(Long Term Stability Program):LTSP是时域仿真程序,用来模拟大型电力系统受到扰动后的长期动态过程。为了保证仿真的精确性,提供了详细的模型和方法。 VSTAB(Voltage Stability Program):该程序用来评价大型复杂电力系统的电压稳定性,给出接近于电压不稳定的信息和不稳定机理。为了估计电压不稳定状态,使用了一种增强的潮流程序,提供了一种接近不稳定的模式分析方法。 ETMSP(Extended Transient midterm Stability Program):EPRI为分析大型电力系统暂态和中期稳定性而开发的一种时域仿真程序。为了满足大型电力系统的仿真,程序采用了稀疏技术,解网络方程时为得到最合适的排序采用了网络拓扑关系并采用了显式积分和隐式积分等数值积分法。 SSSP(Small-signal Stability Program):该程序有助于局部电厂模式振荡和站间模式振荡的分析,由多区域小信号稳定程序(MASS)及大型系统特征值分析程序(PEALS)两个子程序组成。MASS程序采用了QR变换法计算矩阵的所有特征值,由于系统的所有模式都计算,它对控制的设计和协调是理想的工具;PEALS使用了两种技术:AESOPS算法和改进Arnoldi 方法,这两种算法高效、可靠,而且在满足大型复杂电力系统的小信号稳定性分析的要求上互为补充。 二、EMTP/ATP 简介: EMTP是加拿大H.W.Dommel教授首创的电磁暂态分析软件,它具有分析功能多、元件模型全和运算结果精确等优点,对于电网的稳态和暂态都可做仿真分析,它的典型应用是预测电力系统在某个扰动(如开关投切或故障)之后感兴趣的变量随时间变化的规律,将EMTP 的稳态分析和暂态分析相结合,可以作为电力系统谐波分析的有力工具。 ATP(The alternative Transients Program)是EMTP的免费独立版本,是目前世界上电磁暂态分析程序最广泛使用的一个版本, 它可以模拟复杂网络和任意结构的控制系统,数学模型广泛,除用于暂态计算,还有许多其它重要的特性。ATP程序正式诞生于1984年,由Drs.

MATLAB环境下16QAM调制解调仿真程序说明

姓名:Nikey MATLAB环境下16QAM调制及解调仿真程序说明 一、正交调制及相干解调原理框图 正交调制原理框图 相干解调原理框图 二、MQAM调制介绍及本仿真程序的几点说明 MQAM可以用正交调制的方法产生,本仿真中取M=16,即幅度和相位相结合的 16个信号点的调制。 为了观察信道噪声对该调制方式的影响,我们在已调信号中又加入了不同强度的高斯白噪声,并统计其译码误码率。 为了简化程序和得到可靠的误码率,我们在解调时并未从已调信号中恢复载波,而是直接产生与调制时一模一样的载波来进行信号解调。

三、仿真结果图

附源程序代码: main_plot.m clear;clc;echo off;close all; N=10000; %设定码元数量 fb=1; %基带信号频率 fs=32; %抽样频率 fc=4; %载波频率,为便于观察已调信号,我们把载波频率设的较低Kbase=2; % Kbase=1,不经基带成形滤波,直接调制; % Kbase=2,基带经成形滤波器滤波后,再进行调制 info=random_binary(N); %产生二进制信号序列 [y,I,Q]=qam(info,Kbase,fs,fb,fc); %对基带信号进行16QAM调制 y1=y; y2=y; %备份信号,供后续仿真用 T=length(info)/fb; m=fs/fb; nn=length(info); dt=1/fs; t=0:dt:T-dt; subplot(211); %便于观察,这里显示的已调信号及其频谱均为无噪声干扰的理想情况 %由于测试信号码元数量为10000个,在这里我们只显示其总数的1/10 plot(t(1:1000),y(1:1000),t(1:1000),I(1:1000),t(1:1000),Q(1:1000),[0 35],[0 0],'b:'); title('已调信号(In:red,Qn:green)'); %傅里叶变换,求出已调信号的频谱 n=length(y); y=fft(y)/n; y=abs(y(1:fix(n/2)))*2; q=find(y<1e-04); y(q)=1e-04; y=20*log10(y); f1=m/n; f=0:f1:(length(y)-1)*f1; subplot(223); plot(f,y,'r'); grid on; title('已调信号频谱'); xlabel('f/fb'); %画出16QAM调制方式对应的星座图 subplot(224); constel(y1,fs,fb,fc); title('星座图'); SNR_in_dB=8:2:24; %AWGN信道信噪比 for j=1:length(SNR_in_dB) y_add_noise=awgn(y2,SNR_in_dB(j)); %加入不同强度的高斯白噪声 y_output=qamdet(y_add_noise,fs,fb,fc); %对已调信号进行解调 numoferr=0; for i=1:N if (y_output(i)~=info(i)), numoferr=numoferr+1; end; end; Pe(j)=numoferr/N; %统计误码率 end;

VISSIM,PARAMICS,TSIS仿真软件对比分析

三大著名的仿真软件 (VISSIM/PARAMICS/TSIS)对比分析VISSIM仿真系统 VISSIM是德国PTV公司开发的微观仿真软件,是一种微观的、以时间为参照、以交通行为模型为基础的仿真系统,主要用于城市和郊区交通的模拟仿真中。它采用的是一个离散的、随机的、以0.1s为时间步长的微观模型。车辆的纵向运动采用了基于规则的算法。不同驾驶员行为的模拟分为保守型和冒险型。VISSIM提供了图形化的界面,用2D和3D动画向用户直观显示车辆运动,运用动态交通分配进行路径选择。VISSIM可以模拟轨道和道路公共交通、自行车交通和行人交通,由仿真获得的交通特征数据可以评估不同的选择方案。它能够模拟许多城市内和非城市内的交通状况,特别适合模拟各种城市交通控制系统,主要应用有:(1)由车辆激发的信号控制的设计、检验、评价;(2)公交优先方案的通行能力分析和检验;(3)收费设施的分析; (4)匝道控制运营分析;(5)路径诱导和可变信息标志的影响分析;(6)路段、交叉口及整个交通网的通行能力和交通流分析;(7)评估不同的设计规划方案和交通组织方案;(8)评估环形交通;(9)评估收费系统和其他交通服务设施;(10)评估智能交通系统的效果(如路径选择系统);(11)大型公交车站的功能分析:(12)复杂交通设施各种运行方式的优化设计(如信号灯控制的路口和无信号灯控制的路口的组合和协

调);(13)信号灯控制程序的设计和优化:(14)设计公交优先系统;(15)2D和3D模拟结果的动态演示等。 在VISSIM模型中,信号灯控制程序可以在定时控制或者感应式信号程序方式下进行模拟。在信号控制程序的模拟时,西门子、飞利浦、PTV、BASEL等公司的产品都可以与之兼容。VISSIM仿真系统中,对于交通流和信号控制之间有一个接口,通过这个接口可以在检测器数据和信号灯控制参数之间进行数据交换。仿真结果可以是视窗动态交通流演示,或者是最后输出多种重要交通参数的数据表格。VISSIM的交通流模型既可以模拟一条车道上的车队行驶,也可以模拟车流在车道组中的变换情况。利用这些交通特征数据可以按照交通服务水平标准确定交通运行状况,进行多种措施预期实施效果的比较。PARAMICS仿真系统 英国的Quadstone公司开发的Paramics是表现最为出色的商业 化交通仿真产品之一。Paramics从1992年开始开发至今,融合了欧美众多交通及计算机领域科研机构及专家的努力和智慧,具有细致的路网建模、灵活的信号及车辆控制、完善的路径诱导、丰富的编程接口、详尽的数据分析等特色。由于采用了并行计算技术,仿真的路网规模可达上百万个节点,4百多万个路段,3万多个小区。在ITS的研究中,Paramics有突出的表现,能仿真交通信号、匝道控制、检测器、可变信息板、车内信息显示装置,车内信息顾问,路径诱导等。而且用户可以通过API函数定义特殊的控制策略。它还能够从SATURN、NESA、

Protues仿真赛 仿真模块和程序代码

Protues仿真赛 DA模块(DAC0832) 实例程序(实现0到255八位二进制的模拟电压转换)#include "reg51.h" #define uchar unsigned char #define uint unsigned int #define out P1 sbitdac_cs=P2^0; sbitdac_wr=P2^1; void main() { uchar i=0,k=100; while(1)

{ out=i; dac_cs=0; dac_wr=0; dac_cs=1; dac_wr=1; i++; if(i>255) i=0; while(--k); } } ADC0804模块与红外测距传感器GP2D12

实例程序(将红外测距显示的距离化成P1口的八位二进制) uint adc0804() //adc0804读取数据并送入P1口,read=1991/(read+3)-7为距离传感器的计算公式 { wr = 0; read = P1; delayms(10); wr=1; delayms(10); read=1991/(read+3)-7; return read; } LCD1602模块初始化

#include #include #define uint unsigned int #define uchar unsigned char sbit LCD_RS=P2^0; //lcd1602数据、命令选择端sbit LCD_EN=P2^2; //lcd1602使能线 void LCD_init(void) //LCD初始化 { LCD_EN=0; write_cmd(0x38); write_cmd(0x0c); write_cmd(0x06); write_cmd(0x01); } void write_cmd(uchar com) //写命令到LCD { LCD_RS=0; P0=com; delayms(5); LCD_EN=1;

雷达系统仿真matlab代码

% ======================================================================= ====================% % 该程序完成16个脉冲信号的【脉压、动目标显示/动目标检测(MTI/MTD)】 % ======================================================================= ====================% % 程序中根据每个学生学号的末尾三位(依次为XYZ)来决定仿真参数,034 % 目标距离为[3000 8025 9000+(Y*10+Z)*200 8025],4个目标 % 目标速度为[50 0 (Y*10+X+Z)*6 100] % ======================================================================= ====================% close all; %关闭所有图形 clear all; %清除所有变量 clc; % ======================================================================= ============% % 雷达参数 % % ======================================================================= ============% C=3.0e8; %光速(m/s) RF=3.140e9/2; %雷达射频 1.57GHz Lambda=C/RF;%雷达工作波长 PulseNumber=16; %回波脉冲数 BandWidth=2.0e6; %发射信号带宽带宽B=1/τ,τ是脉冲宽度 TimeWidth=42.0e-6; %发射信号时宽 PRT=240e-6; % 雷达发射脉冲重复周期(s),240us对应1/2*240*300=36000米最大无模糊距离 PRF=1/PRT; Fs=2.0e6; %采样频率 NoisePower=-12;%(dB);%噪声功率(目标为0dB) % ---------------------------------------------------------------% SampleNumber=fix(Fs*PRT);%计算一个脉冲周期的采样点数480; TotalNumber=SampleNumber*PulseNumber;%总的采样点数480*16=; BlindNumber=fix(Fs*TimeWidth);%计算一个脉冲周期的盲区-遮挡样点数; %====================================================================== =============% % 目标参数 % %====================================================================== =============% TargetNumber=4;%目标个数 SigPower(1:TargetNumber)=[1 1 1 0.25];%目标功率,无量纲 TargetDistance(1:TargetNumber)=[3000 8025 15800 8025];%目标距离,单位m 距离参数为[3000 8025 9000+(Y*10+Z)*200 8025] DelayNumber(1:TargetNumber)=fix(Fs*2*TargetDistance(1:TargetNumber)/C); % 把目标距离换算成采样点(距离门) fix函数向0靠拢取整 TargetVelocity(1:TargetNumber)=[50 0 204 100];%目标径向速度单位m/s 速度参数为[50 0 (Y*10+X+Z)*6 100]

车辆模拟仿真系统

附件1: 货车车辆模拟仿真培训系统用户手册 1、安装配置要求 服务器配置要求 (1)、硬件要求 CPU:Xeon MP 2.7GHz 内存:1G 网络:双端口100/1000M千兆以太网 硬盘:双端口120GB (2)、软件要求 安装JDK1.5,安装Tomcat5.5Web服务器,安装数据库服务器SQLServer2000中文企业版 客户端配置要求 (1)、硬件要求 CPU:主频2.0G HZ , 内存:2G 独立显示卡:265M独立显存,128bit显存位宽 至少有500MB空闲磁盘可用 (2)、软件要求 Windows 98/ME/NT/2000/XP操作系统

2、搭建软件运行环境 本软件需要jre1.5和jmf两个软件来搭建运行环境。具体安装方法如下: 参考本教程中“软件的安装”-“登录系统”登录系统后,点击按钮,会出现以下界面,包括jre1.5和jmf两个软件的下载: Jre1.5.0.4下载 JMF视频播放器下载 Flash播放插件下载 如果您在播放实作教学时,未发现有flash片段播放,那么请下载并安装Flash播放插件(如上图)。 1、安装jre 如果本机上没有装任何java环境,可直接下载java客户端运行程序。 如果本机上有其他版本(非jdk1.5.0.4)的jre,先通过开始->设置->控制面板->添加或删除程序,卸载原来的jre或jdk版本,再从下载页面中下载并安装jre1.5.0.4。 2、浏览器设置 Windows操作系统在默认情况下自带jre运行环境,如果在IE(浏览器)

中运行就必须进行设置,打开控制面板->internet选项->高级选中“将JRE1.5.0用于“和“启用Java Jit编译器“。如下图所示: 确定完成 3、安装和设置JMF视频播放器 1、安装JMF 在下载页面中下载JMF视频播放器,下载完后运行下载的文件 jmf-2_1_1e-windows-i586.exe 流程如下:

matlab、lingo程序代码22-随机模拟与系统仿真

随机模拟与系统仿真 一. 随机现象的模拟 例: 超市出口有若干个收款台,两项服务:收款、装袋。顾客的到达的时间间隔是随机的;因顾客购买的货物量不同,所以服务时间的长短是随机的。 模拟这些随机现象,即利用计算机产生一系列数,每重复这一过程,产生的数列都不同,但是数列的构成服从一定的规律(概率分布),称这些数为随机数。 1. 随机变量及其分布 随机事件:在一定条件下有可能发生的事件, 其全体记为Ω 。 概率:随机事件A ∈ Ω发生的可能性的度量 P(A), 0 ≤P(A) ≤ 1. 定义: 在Ω的σ-集合类F 上的实值函数,P: ω → P(ω), ω ∈ F , 满足: 1. 非负性:P(ω)≥0, 2. 规范性:P(Ω)=1, 3. 可列可加性:对 ω =U A i ?Ω, {A i }是两两不相容的事件,则 P(ω)= ∑P(A i ) , 称P 为F 上的概率测度. 随机变量: 称在Ω上定义的实值函数 ξ :A → ξ (A) 为随机变量。 离散型: ξ ∈{a k ;k=1,2,…(,n)}, 连续型: ξ ∈(a, b) . 随机变量的分布函数:F(x):=P(ξ

基于MATLAB的数字模拟仿真..

基于MATLAB的数字模拟仿真 摘要:本文阐述了计算机模拟仿真在解决实际问题时的重要性,并较为系统的介绍了使用计算机仿真的原理及方法。对于计算机模拟仿真的三大类方法:蒙特卡罗法、连续系统模拟和离散事件系统模拟,在本文中均给出了与之对应的实例及基于MATLAB模拟仿真的相关程序,并通过实例深入的分析了计算机模拟解决实际问题的优势及不足。 关键词:计算机模拟;仿真原理;数学模型;蒙特卡罗法;连续系统模拟;离散事件系统模拟 在实际问题中,我们通常会面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,这样进行处理过后的模型与我们面临的实际问题可能相差很远,以致求解得到答案根本无法应用,这时,计算机模拟几乎成为唯一的选择。本文通过对计算机模拟仿真进行系统地介绍,寻求利用模拟仿真来解决问题的一般方法,并深入探讨了这些方法的长处和不足。我们定义一些具有特定的功能、相互之间以一定的规律联系的对象所组成的总体为一个系统,模拟就是利用物理的、数学的模型以系统为问题解决对象,来类比、模仿现实系统及其演变过程,以寻求过程规律的一种方法。模拟的基本思想是建立一个实验的模型,这个模型包含所研究系统的主要特点,这样做的目的就是通过对这个实验模型的运行,获得所要研究系统的必要信息。另外,系统的运行离不开算法,仿真算法是将系统模型转换成仿真模型的一类算法,在数字仿真模型中起核心和关键作用。 1、所谓计算机仿真 计算机仿真是利用计算机对一个实际系统的结构和行为进行动态演示,以评价或预测该系统的行为效果。它是解决较复杂的实际问题的一条有效途径。针对一个确定的系统,根据运行的相似原理,利用计算机来逼真模仿研究对象(研究对象可以是真实的系统,也可以是设想中的系统),计算机仿真是将研究对象进行数学描述,建模编程,且在计算机中运行实现。 对比于物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难的诸多缺陷,计算机模拟不怕破坏、易修改、可重用,有更强的系统适应能力。但是计算机模拟也有缺陷,比如受限于系统建模技术,即系统数学模型不易建立、程序调试复杂等。 计算机仿真可以用于研制产品或设计系统的全过程中,包括方案论证、技术指标确定、设计分析、生产制造、试验测试、维护训练、故障处理等各个阶段。 2、计算机仿真的目的 对于一个系统,是否选择进行计算机模拟的问题,基于判断计算机模拟与非计算机模拟方法孰优孰劣的问题。归纳以下运用计算机模拟的情况: (1)在一个实际系统还没有建立起来之前,要对系统的行为或结果进行分析研究时,计算机仿真是一种行之有效的方法。 (2)在有些真实系统上做实验会影响系统的正常运行,这时进行计算机模拟就是为了避免给实际系统带来不必要的损失。如在生产中任意改变工艺参数可能会导致废品,在经济活动中随意将一个决策付诸行动可能会引起经济混乱。 (3)当人是系统的一部分时,他的行为往往会影响实验的效果,这时运用系统进行仿真研究,就是为了排除人的主观因素的影响。

单服务排队系统MATLAB仿真程序

单服务台系统MATLAB仿真 学号:1040408115 姓名:缪晨 一、引言 排队是日常生活中经常遇到的现象。通常,当人、物体或是信息的到达速率大于完成服务的速率时,即出现排队现象。排队越长,意味着浪费的时间越多,系统的效率也越低。在日常生活中,经常遇到排队现象,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。总之,排队现象是随处可见的。排队理论是运作管理中最重要的领域之一,它是计划、工作设计、存货控制及其他一些问题的基础。Matlab是MathWorks公司开发的科学计算软件,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准,几乎所有的工程计算领域,Matlab都有相应的软件工具箱。选用Matlab软件正是基于Matlab的诸多优点。二、排队模型 三.仿真算法原理 (1)顾客信息初始化 根据到达率λ和服务率μ来确定每个顾客的到达时间间隔和服务时间间隔。服务间隔时间可以用负指数分布函数exprnd()来生成。由于泊松过程的时间间隔也服从负指数分布, 故亦可由此函数生成顾客到达时间间隔。需要注意的是exprnd()的输入参数不是到达率λ和服务率μ 而是平均到达时间间隔1/λ

和平均服务时间1/μ。 根据到达时间间隔,确定每个顾客的到达时刻. 学习过C 语言的人习惯于使用FOR循环来实现数值的累加, 但FOR循环会引起运算复杂度的增加而在MATLAB 仿真环境中, 提供了一个方便的函数cumsum() 来实现累加功能读者可以直接引用 对当前顾客进行初始化。第1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。 (2)进队出队仿真 在当前顾客到达时刻,根据系统内已有的顾客数来确定是否接纳该顾客。若接纳则根据前一顾客的离开时刻来确定当前顾客的等待时间、离开时间和标志位;若拒绝,则标志位置为0. 流程图如下:

几款仿真软件的分析

几款地质仿真软件的简介 本文将对ANSYS、ADINA、ABAQUS、MSC、FEPG、Femlab(Comsol)、Flac、PETREL进行简短的介绍。 有限元分析是对于结构力学分析迅速发展起来的一种现代计算方法。有限元分析软件目前流行的有:ANSYS、ADINA、ABAQUS、Femlab(Comsol)、MSC、FEPG等。 ANSYS软件在致力于线性分析的用户中具有很好的声誉,它在计算机资源的利用,用户界面开发等方面也做出了较大的贡献。ABAQUS软件则致力于更复杂和深入的工程问题,其强大的非线性分析功能在设计和研究的高端用户群中得到了广泛的认可。而ADINA软件除了求解非线性问题外,其在多物理场的流固耦合求解功能也是全球唯一的专利技术。COMSOL公司是全球多物理场建模与仿真解决方案的提倡者和领导者,其旗舰产品COMSOL Multiphysics,使所有的物理现象可以在计算机上完美重现。MSC是比较老的一款软件目前更新速度比较慢。FEPG是一款国产有限元分析软件。 一、ANSYS、ADINA、ABAQUS、MSC四者的比较 由于ANSYS产品进入中国市场早于ABAQUS,并且在五年前ANSYS 的界面是当时最好的界面之一,所以在中国,ANSYS软件在用户数量和市场推广度方面要高于ABAQUS。ANSYS软件注重应用领域的拓展,目前已覆盖流体、电磁场和多物理场耦合等十分广泛的研究领域。ABAQUS

则集中于结构力学和相关领域研究,致力于解决该领域的深层次实际问题。而ADINA软件和ANSYS软件一样都包括结构、温度、流体及流固耦合的功能,因此其应用领域也是相当广泛。 对于常规的结构线性问题,三种软件都可以较好的解决,在模型规模限制、计算流程、计算时间等方面都较为接近。 ABAQUS软件和ADINA软件在求解非线性问题时具有非常明显的优势;而ANSYS软件和ADINA软件则在流体和多物理场耦合功能方面具有无可比拟的优势。 目前在多物理场耦合方面ANSYS、ADINA、MSC都可以做到结构、流体、热的耦合分析(ABAQUS专注结构分析目前没有流体模块),但是除ADINA以外其它三个必须与别的软件搭配进行迭代分析,唯一能做到真正流固耦合的软件只有ADINA。 ANSYS/Workbench、ABAQUS/CAE、ADINA/AUI都是采用CAD方式建模和可视化视窗系统,都具有良好的人机交互特性。三种软件都除了提供窗口操作外都还提供命令流输入,但是ABAQUS/CAE并不对所有的命令流都支持CAE界面操作。ANSYS软件和ADINA软件都采用Parasolid为核心的实体建模技术,因此可以和其它Parasolid为核心的CAD软件实行真正无缝的双向数据交换,且该两种软件自身的建模功能很强大。而ABAQUS软件的CAE模块和输入文件两种建模方式是由两家不同的公司研制的,CAE模块功能还不是很完全,一些功能只能通过编辑INP输入文件来实。三种软件都提供多种网格划分器,可以进行复杂模型的自由

频谱分析仪模拟仿真设计

.专业整理. 数字信号处理课程设计 题目:频谱分析仪模拟仿真 专业:电子信息工程 班级: : 日期:2015-03-26

目录 1.设计目的 ------------------------------------------------------------------------1 2.程序流程 ------------------------------------------------------------------------2 3.软件设计 ------------------------------------------------------------------------3 4.心得体会 ------------------------------------------------------------------------4 5.参考文献 ------------------------------------------------------------------------5

一、设计目的 1、通过对频谱分析仪的模拟掌握其基本原理和基本功能; 2、学习掌握用计算机输出基波包括:方波、正弦波、余弦波等; 3、掌握倒位序、离散傅里叶变换(DFT)、快速傅里叶变换(FFT)的原理及算法; 4、分别用DFT和FFT分析比较32位方波序列对比,体会快速算法的意义; 5、学会用turbo c编程软件并且对c语言编程算法进行实践,加深理解。 二、软件设计 1、方波8位加DFT抽样 #include #include #define N 8 #define PI 3.1415926 int sam[8]; void sample() { int i,j; printf("抽样结果:\n"); for(i=0;i=N/2) { j=-1; sam[i]=j; printf("sam[%d]=%d ",i,j); } } printf("\n"); } void DFT() { int k,n,a; float sum1=0,sum2=0; float xi[N],xj[N],xk[N];

离散信号的MATLAB仿真程序代码

n0=0;n1=-10; n2=20;n=[n1:n2]; x=[(n-n0)==0]; subplot(331), stem(n,x);grid; xlabel('n');ylabel('x(n)');title('chongji'); n0=5;n1=-10; n2=20;n=[n1:n2]; x=[(n-n0)==0]; %-10到20这些变量中与n0差值为0的变量有值 subplot(332), stem(n,x);grid;% xlabel('n');ylabel('x(n)');title('chongji'); n=-5:15; x1=[zeros(1,5) ones(1,16)];%用矩阵表示1行5列的0矩阵与1行16列的1矩阵组成x1 x2=[(n-5>=0)];%移位 subplot(333), stem(n,x1);grid;% xlabel('n');ylabel('x1(n)');title('u(n)');%对坐标轴与取名 axis([-6 16 -0.1 1.1]); subplot(334), stem(n,x2);grid; xlabel('n');ylabel('x2(n)');title('u(n-5)'); axis([-6 16 -0.1 1.1]); set(gcf,'color','w') n=-5:10;R8=[(n>=0)&(n-7<=0)]; subplot(335), stem(n,R8); xlabel('n');ylabel('x(n)');title('R8(n)'); axis([-6 16 -0.1 1.1]);grid;set(gcf,'color','w'); n=-21:21; x=3*sin(0.2*pi*n+2*pi/3); n1=-24:0.1:24;x1=2*sin(0.2*pi*n1+2*pi/3); subplot(336), stem(n,x,'.');hold on;plot(n1,x1,'--'); xlabel('n');ylabel('x(n)');title('2sin(0.2\pin+2\pi/3)'); axis([-23.5 23.5 -2.1 2.1]); n=[0:10]; x=(0.9).^n;

相关文档
最新文档