
[UsingMatLabsimulationcommunicationprincpleseriesof] - 本毕业设计用Matlab中的建模仿真工具SIMULINK对通信原理实验进行仿真。作为系列实验的第一部分,包括模拟信号的线性调制解调(AM、DSB、SSB)过程、扰码与解扰实验和低通信号的抽样定理实验。论文中讲述了Matlab的基础知识、
我可以写,需要的联系我。
基于Systemview的通信系统的仿真摘 要数字通信系统, 按调制方式可以分为基带传输和带通传输。数字基带信号的功率一般处于从零开始到某一频率低频段,因而在很多实际的通信中就不能直接进行传输,需要借助载波调制进行频谱搬移,将数字基带信号变换成适合信道传输的数字频带信号进行传输,这种传输方式,称为数字信号的频带传输或调制传输。数字调制在实现的过程中常采用键控的方法,从几个不同参量的独立振荡源中选参量,由此产生的三种基本调制方式分别称为振幅键控(ASK,Amplitude-Shift keying)、移频键控(FSK ,Frequency-Shift keying)和移相键(PSK,Phase-Shift keying )或差分移相(DPSK,DifferentPhase-Shift keying)。本文通过Systemview仿真软件,对2ASK、2FSK、2PSK、2DPSK系统进行仿真,分析2ASK、2FSK、2PSK和2DPSK的信号的调制方式,频谱特性,2ASK的相干解调和非相干解调系统、利用Costas环对2FSK、2PSK信号进行解调以及2FSK、2PSK的相干解调系统,并且对2PSK的抗噪声性能做了一定的分析,最后同样用两种方式对2DPSK信号解调,并进行仿真分析。通过对2ASK、2FSK、2PSK和2DPSK系统的分析,对几种调制方式的抗噪声性能、频带利用率及相干解调和非相干解调的抗噪声性能等有了更加清楚的认识。关键字:2ASK;2FSK;2PSK;2DPSK;相干解调;非相干解调;Systemview一、绪论数字通信系统, 按调制方式可以分为基带传输和带通传输。数字基带信号的功率一般处于从零开始到某一频率(如0~6M)低频段,因而在很多实际的通信(如无线信道)中就不能直接进行传输,需要借助载波调制进行频谱搬移,将数字基带信号变换成适合信道传输的数字频带信号进行传输,这种传输方式,称为数字信号的频带传输或调制传输、载波传输。所谓调制,是用基带信号对载波波形的某参量进行控制,使该参量随基带信号的规律变化从而携带消息。对数字信号进行调制可以便于信号的传输;实现信道复用;改变信号占据的带宽;改善系统的性能。和模拟调制不同的是,由于数字基带信号具有离散取值的特点,所以调制后的载波参量只有有限的几个数值,因而数字调制在实现的过程中常采用键控的方法,就像用数字信息去控制开关一样,从几个不同参量的独立振荡源中选参量,由此产生的三种基本调制方式分别称为振幅键控(ASK,Amplitude-Shift keying)、移频键控(FSK,Frequency-Shift keying)和移相键(PSK,Phase-Shift keying )或差分移相键(DPSK,DifferentPhase-Shift keying)。数字调制系统的基本结构如图: 在数字调制中,数字基带信号可以是二进制的,也可以是多进制的,对应的就有二进制数字调制和多进制数字调制两种不同的数字调制,最简单的情况即是以二进制数字基带信号作为调制信号的二进制数字调制,本次课程设计主要针对就是最常用的二进制数字调制方式即二进制振幅键控、移频键控和移相键控三进行系统仿真分析,通过学习Systemview仿真软件,对对三种系统进行仿真,熟悉2ASK、2FSK、2PSK和2DPSK的原理、已调信号的频谱特点和各系统的抗噪声性能。二、Systemview软件简介 Systemview软件特点Systemview是El ANIX公司推出的一个完整的动态系统设计、模拟和分析的可视化软件。他可以提供大量的信号源供系统分析使用;其丰富的算子图符和函数库便于设计和分析各种系统;其多种信号接受器为时域和频域的数值分析提供便捷的途径;其无限制的分层结构使建立大而复杂的系统变得容易;另外他还提供对于外部数据文件的接口,使信号分析更加灵活方便。Systemview操作简单,使用方便,只要用鼠标从Systemview 库中选择图符并将他们拖拽到设计窗口中连接起来创造线性和非线性,离散和连续,模拟、数字和混合模式的系统,Systemview 的所有图符都有相似的参数定义窗口,我们所要做的只是修改各个图符的参数,无需编程即可实现系统的设计和模拟。Systemview 的界面直观,设计窗口中各功能模块都用形象直观的图符表示,分析窗口中分析结果以各种图形直观显示,使我们对系统的结构,功能和分析结果一目了然。他的另一个重要特点是可扩展性,Systemview 允许用户插入使用C++编写的用户代码库,插入的用户库自动集成到Systemview 中,能够像内建库一样使用。Systemview提供了智能化的辅助设计。在系统设计仿真时,Systemview 能自动执行系统连接检查,给出连接错误信息或尚悬空的待连接端信息。通知用户连接出错并通过显示指出出错的图符。并在编译时,给出系统运行的大约时间,方便了设计人员进行调试。其带有的API功能可以利用VC 环境,将系统编译成可脱离Systemview独立运行的可执行文件,大大提高了运行速度和仿真效率。 使用Systemview进行系统仿真的步骤使用Systemview进行系统仿真,一般要经过以下几个步骤:(1)建立系统的数学模型 根据系统的基本工作原理,确定总的系统功能,并将各部分功能模块化,找出各部分的关系,画出系统框图。(2)从各种功能库中选取、拖动可视化图符,组建系统在信号源图符库、算子图符库、函数图符库、信号接受器图符库中选取满足需要的功能模块,将其图符拖到设计窗口,按设计的系统框图组建系统。(3)设置、调整参数,实现系统模拟参数设置包括运行系统参数设置(系统模拟时间,采样速率等)和功能模块运行参数(正弦信号源的频率、幅度、初相,低通滤波器的截止频率、通带增益、阻带衰减等)。(4)设置观察窗口, 分析模拟数据和波形 在系统的关键点处设置观察窗口,用于检查、监测模拟系统的运行情况,以便及时调整参数,分析结果。三、二进制频移键控(2FSK) 二进制频移键控(2FSK)的基本原理FSK是在数字信号调制中使用较典型的一种调制方式,其利用载波的频率变化来传递数字信息0 或1. 由于其实现起来较容易、抗噪声与抗衰减的性能较好,因此,在中低速数据传输(传输速率在1 200 bit/ s 以下) 中得到了广泛的应用.在二进制FSK中载波频率随着调制信号1或0而变,1 对应于载波频率f1,0对应于载波频率f2 .二进制FSK已调信号的时域表达式为:S2FSK( t) = ∑nang(t-nTS )cosω1t +∑na-ng(t- nTS)cosω2t其中:ω1 = 2πf1,ω2 = 2πf2an =0 概率为P a-n = 1 概率为P1 概率为1–P 0 概率为1 - P式中:a-n—an 的反码;g—码元波形;TS—码元周期f1、f2 —2FSK的两个不同的载波频率. 2FSK调制的方法 同2ASK调制的方法相同,2FSK也有两种调制方式:模拟调频法,如图(a)和数字键控的方法,如图(b), 图 2FSK信号产生的方法由(b)可得2FSK的表达式如下: 数字键控法实现二进制移频键控信号的原理图如下 :图数字键控法实现2FSK信号的原理图由上图可得二进制移频键控信号的时间波形如下:图 2FSK信号的时间波形可得2FSK的时域表达式如下:(2)2FSK信号的解调 2FSK解调的方法图 2FSK信号非相干解调 使用Systemview软件对2FSK系统进行仿真 2FSK信号的产生 调频法:在SystemView 中二进制数据用伪随机序列PNSeq仿真出随机的0 ,1 二进制数字信号,通过调频器FM 调制,0 对应50 Hz ,1 对应100 Hz.幅度A 均为1 V.键控法:在SystemView中二进制数据用伪随机序列PNSeq仿真出随机的0,1二进制数字信号,作为键控开关的控制信号,0 对应50 Hz 正弦波,1对应100 Hz 正弦波. 幅度A 均为1V.(1)调频法产生2FSK信号 图 调频法实现2FSK信号仿真结果如下: 图 2FSK信号波形图(1)键控法产生2FSK信号 图数字键控法实现2FSK信号分析:系统的参数设计如下:Token0为调制信Amplitude=,Token1、3为载波,载波1频率=50HZ,载波3频率=100HZ。 Token2、4为乘法器Token7为Adder。 Token6为反相器,系统运行时间为,采样频率=20000HZ。仿真分析如下: 图 2FSK信号波形分析:从上到下依次是调制信号波形、频率为f1的已调信号波形,频率为f2的已调信号波形,2FSK信号波形。由图中可以观察到2FSK信号就是两个2ASK信号叠加而成.。 2FSK信号的频谱图 图 2FSK信号的离散频谱图分析:在观察2FSK信号的频谱图时将载波的频率改为f1=2500HZ f2=5000HZ,得如图所示2FSK信号的频谱从上到下,从左到右上图依次是调制信号的频谱图,已调信号的频谱图,频率为f1已调信号的频谱图,频率为f1已调信号的频谱图。由于FFT频谱是对称的,故图中只画出了前一半。分析图可得2FSK信号频谱特性如下:2FSK信号频谱特性:由连续谱和离散谱两部分组成。连续谱由两个双边谱叠加而成,而离散谱则出现在两个载频上。若两个载频之差较小,如小于fs,则连续谱出现单峰;若载频之差逐步增大,则连续谱将出现双峰。2FSK是非线性调制。2FSK信号带宽为: 2FSK非相干解调系统(1)2FSK非相干解调系统框图如下: 图 2FSK非相干解调系统框图分析:设计解调电路时,先用中心频率为500Hz 和1kHz的两个带通滤波器将已调信号滤成两路并联信号。这里选用通带分别为480~520Hz 和980~1020Hz 的Chebyshev 带通滤波器。接下来选用合适的器件实现包络检波器的功能。包络检波法解调方法,包络检波器可由半波整流器(Half Rctfy) 与低通滤波器串联实现其功能。半波整流器的功能描述是y ( t) = x ( t) - z , x ( t) ≥z其中, y ( t) 为输出信号, x ( t ) 为输入信号, z 为所设置的零点。当z 取0 时,其功能为:y ( t) =x ( t); x ( t) ≥00 ; x ( t) < 0低通滤波器选用Chebyshev 模拟滤波器,截止频率设置为20 Hz。这样设置后通过包络检波的两路信号波形如图所示。在图5 中,上面一路信号为带通滤波器中心频率为500Hz 的那路信号;下面一路信号为带通滤波器中心频率为1000 Hz 的那路信号,再经过包络检波后的两路信号的高低电平。在图中,因为这里的抽样判决器是判定哪一个输入样值大, 可以选用逻辑库中的模拟比较器(AnaCmp) 来进行抽样判决。AnaCmp 是一个两端输入一端输出的逻辑器件。选择输出时,其逻辑功能是当INPUT + > = INPUT - 时,输出高电平的值;当INPUT +< INPUT - 时,输出低电平的值。当选择Q 输出时,其逻辑功能是当INPUT + > = INPUT - 时,输出低电平的值;当INPUT + < INPUT - 时,输出高电平的值。将两路信号接入,高低电平值分别设置为1 V 和-1 V ,选择输出,输出的信号就将是解调信号【图中(c)】 。波形仿真结果如下: 图 2FSK非相干解调波形(a)分析:从上到下,从左到右依次是调制信号波形、本地载波波形、经过中心频率为f1的带通滤波器后的波形、经过中心频率为f2的带通滤波器后的波形。图 2FSK非相干解调波形(b)分析:从上到下,从左到右依次是经过中心频率为f1的带通滤波器后的波形、频率为f1的信号半波整流后的波形、经过中心频率为f2的带通滤波器后的波形、频率为f2的信号半波整流后的波形。 图 2FSK非相干解调波形(c)分析:从上到下,从左到右依次是频率为f1的信号经过低通滤波i器后的波形、频率为f2的信号经过低通滤波i器后的波形、调制信号的波形、已调信号的波形。 2FSK锁相鉴频法解调系统调制采用“载波调频法”产生2FSK信号,解调采用“锁相鉴频法”。系统组成如图所示。 根据图所示系统,在SystemView系统窗下建立仿真系统,首先设置时间窗,运行时间:秒,采样速率:20000Hz,组成系统如图所 示, 2FSK锁相鉴频法解调系统框图其中:Token0:PN码源,参数:Amp=1v、Offset=0v、Rate=10Hz、 levels=2;Token1:直接调频器,参数:Amp=1v、F=1700Hz、Phase=0、Mod Gain=400Hz/V;Token5,6,4:锁相环路,其中Token6为Butterworth_LPF、 Poles=1、Lo Cuttoff=1200Hz; Token5:VCO,参数:Amp=2v、F=1700Hz、Phase=0、Mod Gain=800Hz/v; Token8:低通滤波器,参数:Butterworth_BPF、 Poles=7、Lo Cuttoff=2400Hz;Token14:过零比较器,参数:选a>b模式、a输入为Token8输出、b输入为门限电平、 True Output=1v、false Output=-1v ;Token15:比较门限电平,选正弦信号源,Amp=0V、F=0Hz,即比较门限为0电平;Token10,11,16,17,13:信宿接收分析器Sink。仿真结果如下图: 3.. 2FSK锁相鉴频法解调波形图分析:从上到下,从左到右波形图依次是基带信号、解调信号、滤波1输出信号、滤波2输出信号.四、二进制振幅键控(2ASK)、二进制振幅键控的基本原理2ASK信号时间波形e(t)随二进制基带信号是s(t)的通断的变化,如下图g(t)、s(t)、e(t)如下图 图 2ASK信号时间波形(1)2ASK信号的解调方法通常有两种,如下图:图—2(2)e(t)的功率谱密度为:单极性随机脉冲序列功率谱密度的一般表达式为:得e(t)的功率谱为: Systemview软件对2ASK系统进行仿真 2ASK调制系统 ①2ASK调制系统框图如下:图 2ASK调制系统分析:如下图2ASK调制的方法通常有两种:一般模拟幅度的调制方法,如图(a)和数字键控的方法,如图(a),图中开关受s(t)的控制; 图 2ASK调制的方法②仿真分析: 图 2ASK信号波形 2ASK频谱及功率谱 图 2ASK频谱及功率谱分析:上图中从上到下,从左到右依次是基带信号频谱,已调信号的频谱,调制信号的功率谱和已调信号的功率谱。由于FFT频谱是对称的,故图中只画出了前一半。分析图可得2ASK频谱特性如下:2ASK频谱特性:①由连续谱和离散谱两部分组成。连续谱取决于g(t)经线性调制后的双边带谱,离散谱由载波分量决定。②2ASK信号的频谱只是将基带信号的频谱沿频率轴平移了一个fc,而基带信号的频谱结构并不改变。③基带信号带宽为fs,2ASK信号带宽为2fs。频带利用率仅为直接传输基带信号的1/2。 2ASK相干解调的系统 图 2ASK相干解调的系统框图分析:系统的参数设计如下:Token1、3为乘法器,Token2、6为载波,载波频率=1000HZ, Token4为Adder为高斯脉冲形成滤波器;Token5为高斯噪声产生器,设标准偏差 Std Deviation=,均值Mean=0v;Token7为模拟低通滤波器,来自选操作库中的“LinearSys”图符按钮,在设置参数时,将出现一个设置对话框,在“Design”栏中单击Analog…按钮,进一步单击“Filter PassBand”栏中Lowpass按钮,选择Butterworth型滤波器,设置滤波器极点数目: Poles=5(5阶),设置滤波器截止频率:LoCuttoff=200 Hz。Token11为基带信号,频率=50HZ,电平=2,偏移=1系统运行时间为,采样频率=20000HZ。仿真结果如下: 图 2ASK相干解调波形分析:上图的结果依次是基带信号、已调信号和解调信号 ASK非相干解调的系统(1)2ASK非相干解调的系统的框图如下:① 图 2ASK非相干解调的系统的框图系统的参数设计如下:Token1、3为乘法器,Token2、6为载波,载波频率=1000HZ, Token4为Adder为高斯脉冲形成滤波器;Token5为高斯噪声产生器,设标准偏差 Std Deviation=,均值Mean=0v;Token7为模拟低通滤波器,来自选操作库中的“LinearSys”图符按钮,在设置参数时,将出现一个设置对话框,在“Design”栏中单击Analog…按钮,进一步单击“Filter PassBand”栏中Lowpass按钮,选择Butterworth型滤波器,设置滤波器极点数目: Poles=5(5阶),设置滤波器截止频率:LoCuttoff=200 Hz。Token11为基带信号,频率=50HZ,电平=2,偏移=1系统运行时间为,采样频率=20000HZ。② 仿真结果如下: 图 2ASK非相干解调的波形分析:上图的结果依次是基带信号、已调信号和解调信号五、二进制移相键控(2PSK) 二进制移相键控(2PSK)的基本原理2PSK,二进制移相键控方式,是键控的载波相位按基带脉冲序列的规律而改变的一种数字调制方式。就是根据数字基带信号的两个电平(或符号)使载波相位在两个不同的数值之间切换的一种相位调制方法。两个载波相位通常相差180度,此时称为反向键控(PSK),也称为绝对相移方式。(1)2PSK信号的产生2PSK的产生:模拟法和数字键控法,就模拟调制法而言,与产生2ASK信号的方法比较,只是对s(t)要求不同,因此2PSK信号可以看作是双极性基带信号作用下的DSB调幅信号。而就键控法来说,用数字基带信号s(t)控制开关电路,选择不同相位的载波输出,这时s(t)为单极性NRZ或双极性NRZ脉冲序列信号均可。 2PSK信号与2ASK信号的时域表达式在形式上是完全相同的,所不同的只是两者基带信号s(t)的构成,一个由双极性NRZ码组成,另一个由单极性NRZ码组成。因此,求2PSK信号的功率谱密度时,也可采用与求2ASK信号功率谱密度相同的方法。(2)2PSK信号的功率谱 2PSK信号的功率谱密度 及其功率谱示意图如下: 分析2PSK信号的功率谱:(1)当双极性基带信号以相等的概率(p=1/2)出现时,2PSK信号的功率谱仅由连续谱组成。而一般情况下,2PSK信号的功率谱由连续谱和离散谱两部分组成。其中,连续谱取决于基带信号经线性调制后的双边带谱,而离散谱则由载波分量确定(2)2PSK的连续谱部分与2ASK信号的连续谱基本相同因此,2PSK信号的带宽、频带利用率也与2ASK信号的相同 其中, 数字基带信号带宽。这就表明,在数字调制中,2PSK的频谱特性与2ASK相似。相位调制和频率调制一样,本质上是一种非线性调制,但在数字调相中,由于表征信息的相位变化只有有限的离散取值,因此,可以把相位变化归结为幅度变化。这样一来,数字调相同线性调制的数字调幅就联系起来了,为此可以把数字调相信号当作线性调制信号来处理了。(3)2PSK的解调系统①2PSK信号属于DSB信号,它的解调,不再能采用包络检测的方法,只能进行相干解调。2PSK相干解调系统框图及个测试行波形如下: 2PSK相干解调系统框图及个测试点波形②利用Costas环对2PSK信号进行解调2PSK 调制和Costas环解调系统组成如下图所示: 2PSK 调制和Costas环解调系统组成 Systemview软件对2PSK系统进行仿真 2PSK信号的产生 键控法产生2PSK信号框图分析:键控法产生2PSK信号,用数字基带信号s(t)控制开关电路,选择不同相位的载波输出,这时s(t)为单极性NRZ或双极性NRZ脉冲序列信号均可。 仿真结果如下: 2PSK信号的波形分析:2PSK信号与2ASK信号的时域表达式在形式上是完全相同的,所不同的只是两者基带信号的构成,一个由双极性NRZ码组成,另一个由单极性NRZ码组成。 2PSK相干解调系统 2PSK相干解调系统框图分析:2PSK信号相干解调的过程实际上是输入已调信号与本地载波信号进行极性比较的过程,故常称为极性比较法解调。由于2PSK信号实际上是以一个固定初相的末调载波为参考的,因此,解调时必须有与此同频同相的同步载波。如果同步载波的相位发生变化,如0相位变为π相位或π相位变为0相位,则恢复的数字信息就会发生“0”变“1”或“1”变“0”,从而造成错误的恢复。这种因为本地参考载波倒相,而在接收端发生错误恢复的现象称为“倒π”现象或“反向工作”现象。绝对移相的主要缺点是容易产生相位模糊,造成反向工作。这也是它实际应用较少的主要原因。仿真结果如下: 图 2PSK相干解调系统框图分析:以上波形从上到下依次是调制信号波形、2PSK波形、相乘输出波形、滤波后的波形、解调出的波形。 2PSK 调制和Costas环解调系统组成 图 2PSK 调制和Costas环解调系统框图仿真结果如下: 图 2PSK Costas环解调出波形分析:从上到下依次是:调制信号波形、低通滤波后的波形、解调出的波形。 2PSK信号的频谱和功率谱 图 2PSK信号的频谱和功率谱分析:2PSK信号的功率谱特点:(1)当双极性基带信号以相等的概率(p=1/2)出现时,2PSK信号的功率谱仅由连续谱组成。而一般情况下,2PSK信号的功率谱由连续谱和离散谱两部分组成。其中,连续谱取决于数字基带信号s(t)经线性调制后的双边带谱,而离散谱则由载波分量确定。 (2)2PSK的连续谱部分与2ASK信号的连续谱基本相同(仅差一个常数因子)。因此,2PSK信号的带宽、频带利用率也与2ASK信号的相同 误比特率BER分析(1)原理:误比特率(BER:Bit Error Rate)是指二进制传输系统出现码传输错误的概率,也就是二进制系统的误码率,它是衡量二进制数字调制系统性能的重要指标,误比特率越低说明抗干扰性能越强。对于多进制数字调制系统,一般用误符号率(Symble Error Rate)表示,误符号率和误比特率之间可以进行换算,例如采用格雷编码的MPSK系统,其误比特率和误符号率之间的换算关系近似为: 其中,M为进制数,且误比特率小于误符号率。(2)2PSK系统BER分析的仿真分析系统 图 2PSK系统BER分析的仿真分析系统编号 图符块属性(Attribute) 类型(Type) 参数设置(Parameters)0 Source PN Seq Amp=1v, Offset=0v, Rate=50Hz, Level=23、.6 Source Sinusoid Amp=1v, Freq=1000Hz, Phase= 0 deg4 Source Gauss Noise Pwr Density=, Mean=0v, System=50 ohms13 Operator Gain Gain Unit=dB Power, Gain=-30dB5 Operator Linear Sys Butterworth, Lowpass IIR, 5 Poles, Fc=200Hz1 Operator Sampler Interpolating, Rate=50Hz21 Comm BER Rate bits, Threshoid=0v, Offset=1 Sec18 Operator Smpl Delay Fill Last register, Delay=1 samples19 Operator Sampler Interpolating, Rate=50Hz14 Sink Final Value -- (终值显示图符块)15 Fuction Cmlty Avg Gain=1 (累积平均图符块)17 Sink Analysis -- (观察叠加的高斯噪声每次循环的强度变化)(3)仿真分析: 图 叠加高斯噪声强度随循环每次减小3dB变化图 随解调信号SNR改变的BER曲线分析:输入的2PSK信号功率保持不变,而叠加的高斯噪声功率逐次衰减,即SNR不断增加。系统的误信率一直在下降。
1. 无线数据网络中基于斯塔克尔博格博弈的功率控制 2. 动能定理,机械能守恒定律应用 3. 宽带网络中业务模型的仿真分析 4. 基于 AVC码率控制算法的研究 5. 基于GRF-3100射频系统的混频器的设计与制作 6. VOIP语音通信系统的设计与应用 7. 基于Labview的实验数据处理的研究 8. 基于NS2的路由算法研究与仿真 9. 图像处理工具箱的VC实现 10. 嵌入式实时系统设计模式的应用 11. 基于VC的UDP的实现 12. 基于TCP/IP协议嵌入式数字语音传输系统终端硬件设计 13. 基于MPLS的VPN技术原理及其实现 14. 基于FPGA的步进电机控制系统的数字硬件设计研究 15. 多路信号复用的基带发信系统模型 16. 数字音频水印研究 17. 数字电视传输系统-城市数字电视平移 18. 虚拟演播室应用研究与设计 19. 电视节目制作系统设计 20. KM3知识管理系统解决方案 21. 移动通信系统的频率分配算法设计 22. 通信系统的抗干扰技术 23. 扩频通信系统抗干扰分析 24. 基于OPNET的网络规划设计 25. 基于NS2的路由算法仿真 26. 基于GPRS的数据采集与传输系统设计 27. 搅拌混合器微分先行控制系统设计 28. 车辆牌照自动识别系统 29. 基于CPLD器件的数字频率计的设计 30. 大容量汉字显示系统的设计 31. 数控直流电压源的设计 32. 基于s6700电子标签阅读器设计 33. 嵌入式网络连接设计 34. Java手机网络游戏的实现和程序设计 35. 简频率特性测试仪设计 36. DDS及其在声学多普勒流速测量系统中的应用 37. AVR 8位嵌入式单片机在车载全球定位系统显示终端中的应用 38. 基于单片机的考勤系统设计 39. 基于单片机的寻呼机编码器 40. 基于MF RC632射频识别读写器芯片的专用读卡器 41. 具有SPI接口的数字式同步发送器设计 42. 小区停车场计费系统设计 43. 村村通无线接入系统中的CDMA技术 44. 语音校检报文的程序设计 45. 基于轧制扰动负荷观测器的轧机传动机电振动控制系统设计 46. 基于MATLAB的数字滤波器的设计 47. 基于VHDL的乒乓游戏机的设计 48. 语音信号的滤波设计 49. 基于DSPTMS320F206的高炉自动进料控制系统 50. 基于VHDL语言的基带线路码产生电路仿真设计 51. 智能天线的研究 52. 混合动力汽车电机驱动单元 53. 混合动力汽车 54. 直流电机双闭环调速系统设计 55. 双馈电机直接转矩DSP控制 56. 双馈电机直接转矩控制 57. 无刷直流电机调速系统 58. 异步电机直接转矩控制 59. 人脸识别系统的研究与实现 60. 锁相频率合成器的设计与仿真 61. 动态链接库进阶 62. 电话业务综合管理系统设计 63. 弹性分组环RPR的公平算法研究 64. 低轨卫星移动通信信道模型研究 65. 大数计算的算法探讨及其在椭圆曲线密码体制中的应用 66. HY防火墙管理软件开发过程及ACL模块功能实现 67. EPON的原理分析 68. DCS通讯与软测量技术的研究 69. 3G的AKA协议中F1至F5的UE端的实现 70. 《信号与系统》课件的设计与实现 71. 《电路与电子学》电子课件的设计与制作 72. RSA公钥算法研究与实现 73. p2p通信模型的java实现 74. 搜索引擎的开发与实现 75. 图书馆管理系统及原代码毕业设计 76. 网络安全专题学习网站设计 77. 网络教育应用网站设计 78. 校园网组建、开发与管理 79. 最优化软件设计实现 80. 租赁网的设计和实现 81. 远程控制终端数据接口设计 82. 遗传算法及其在网络计划中的应用 83. 研华PCI-1753板卡Linux驱动程序的开发 84. 软测量技术在造纸打浆过程的应用研究 85. 嵌入式系统研制AD数模转换器 86. 劳动生产率增长条件的研究 87. 基于XML帮助系统的设计与实现 88. 基于MPT-1327的集群系统智能基站的研究与设计 89. 基于J2ME的手机部分功能实现 90. 购销存财务软件的应用比较 91. 高清视频多媒体播放器 92. 基于CORBA网络管理技术及其安全性的研究和应用 93. 基本开发的网上商场的设计与实现 94. 桂林大广电子公司网站设计 95. 电信客户关系管理系统的分析与实现 96. 企业办公局域网的建设 97. 第三代移动通信承载业务和QoS处理机制无线资源管 98. 计算机病毒动态防御系统毕业论文 99. 3G标准化进程及其演进策略 100. 鲁棒数字水印算法的研究和比较 101. 基于SPCE061A的语音遥控小车设计——?硬件电路设计
相关论文:Vc++下如何利用Matlab工具箱进行数字信号处理摘要: 本文详述了在Vc环境下如何利用Matlab工具箱进行数字信号处理,全文以Matlab工具箱中功率谱密度分析函数为例,介绍了通过Matlab自带的引擎、Matlab自身的编译器以及利用MathTools公司的Matcom进行对工具箱函数的调用。 关键词:Matlab M-文件 引擎 编译器 Matcom Vc++Matlab的信号处理工具箱是信号算法文件的集合,它处理的基本对象是信号与系统,信号处理工具箱位于目录、Toolbox\Signal下,利用工具箱中的文件可以实现信号的变换、滤波、谱估计、滤波器设计等。在其它的环境如Vc下如果能调用Matlab工具箱中的文件,会大大地加快一些算法的实现,同时其可靠性也很高。利用Matlab引擎 Matlab引擎采用客户和服务器计算方式,在运用中,Vc的C语言或C++语言的程序作为前端客户机,它向Matlab引擎传递命令和数据信息,并从Matlab引擎接收数据信息,它提供了下列几个函数: engOpen, engGetArray, engPutArray, engEvaString, engOutputBuffer ,engClose与客户机进行交互。下面例程是在Vc下建一个基于对话框的应用程序,在对话框中设置一个Button控件OnMatlabEngine.,在对话框 .cpp文件中加入”” 和“” 头文件,下面给出部分程序清单。Void CtestmatlabDlg::OnMatlabEngine(){Engine *ep;mxArray* T=NULL,*result=NULL,*mFs=NULL,*mnfft= NULL;double datax[1024];char buffer[1024];for(int j=0;j<1024;j++)//注:如通过采集卡采集数据可将采集的数据放在datax[]数组中,此循环就不需要{double samt=(double)(); datax[j]=sin(**samt**);}double *pPxx,*pFxx;if(!(ep=engOpen(" \0"))){//打开Matlab引擎,建立与本地Matlab的连接fprintf(stderr,"\n Can't start MATLAB engine\n");exit(-1);} double Fs[1]={1024};//因为Matlab所有参与运算的参数都是矩阵的形式,因而下列几行将参数转变double nfft[1]={1024};//成Matlab可接受的矩阵形式。T=mxCreateDoubleMatrix(1,1024,mxREAL);mnfft=mxCreateDoubleMatrix(1,1,mxREAL);mFs=mxCreateDoubleMatrix(1,1,mxREAL);mxSetName(T,"T");mxSetName(mnfft,"mnfft");mxSetName(mFs,"mFs");memcpy((char*)mxGetPr(T),(char*)datax, 1024*sizeof(double));memcpy((char*)mxGetPr(mnfft),(char*)nfft, sizeof(double));memcpy((char*)mxGetPr(mFs),(char*)Fs,1*sizeof(double));engPutArray(ep,T); //将转化的参数放入引擎中,此时可在Matlab command窗口下查看此参数engPutArray(ep,mnfft); engPutArray(ep,mFs);engEvalString(ep,"[pxx,fo]=psd(T,mnfft,mFs);"); //利用引擎执行工具箱中文件engOutputBuffer(ep,buffer,512); //如只想看显示图形,可将返回参数去掉,psd无返回参数缺省情况下会自动画图形result=engGetArray(ep,"pxx");//取出引擎中的数据放在所指的区域中供后续处理pPxx=mxGetPr(result); result=engGetArray(ep,"fo");pFxx=mxGetPr(result);engEvalString(ep,"plot(fo,10*log10(pxx));");//利用引擎画图engEvalString(ep,"title('功率谱分析');");engEvalString(ep,"xlabel('Hz');");engEvalString(ep,"ylable('db');");mxDestroyArray(T); //释放内存mxDestroyArray(mFs);mxDestroyArray(mnfft);mxDestroyArray(result);engEvalString(ep,"close;");engClose(ep);}上述程序在Vc下编译需要将 和两个动态库利用以下的命令:lib/def:<自己的Matlab的安装路径,下同>e:\ Matlab\extern\include\*.def /machine:ix86 /out:*.lib来生成程序所需的静态连接库和,将和所在的目录加入Vc++ project/link/object/library modules下即可。利用Matlab自身的编译器调用工具箱中的函数 Matlab的编译器可将Matlab的M文件转换为为C或C++的源代码以产生完全脱离Matlab运行环境的独立的运用程序,但Matlab本身的资料说明编译器如用来建立独立的运用程序,不能调用Matlab工具箱中的函数,这非常不利于搞一些特殊的算法。本人研究了一段时间发现,工具箱中的函数既然是M文件就一定可以用编译器来编译,以提供如Vc的调用函数,但是编译器只能编译一个独立的M文件,即这个 M文件不依赖于其他的M文件。如果M文件中又调用了其他的M文件,可将被调用的M文件拷贝到调用M文件的相应位置,作适当的改动就可以用于编译器编译。编译器不支持图形函数,所以M文件中如有图形函数需注释掉。当Matlab的编译器mcc加入适当的参数-e(mcc –e *.*)或-p(mcc –p *.*)就可生成将输入的M文件转换为适用于特定运用的C或C++源代码。这样如果要在Vc下编译通过,还需连入以下几个库, , , . . 以及Matlab C MATH库,建议采用前述的方法将动态连接改为静态连接。对于C/C++编译环境的设置,在Matlab command窗口下运行mex –setup 然后依提示操作,而对于C/C++连接环境的设置,运行mbuild –setup依提示操作即可。下面给出利用编译器将Matlab工具箱中文件生成可供Vc调用的函数。将文件拷贝一份至Matlab\bin目录下,改写相应调用的M文件如, 等。为生成的代码简洁,对于采集数据处理输入参数很明了的情况下可作大量的删减,最终使成为一个不依赖于其他M文件的独立的M文件,注意千万注释掉作图代码,最终改成如下形式,限于篇幅给出关键的几步: function [Pxx,f]=psd(Fs,nfft,noverlap,x)window=o,5*(1-cos(2*pi*(1:nfft)’/(nffft+1)));//hanning 窗dflag=’none’;window=window(;)………………………………….以上只要稍懂Matlab语言和信号处理知识就可完成这项工作。假设上述代码重新存为,在Matlab command 窗口下设置好环境参数运行mcc –e testwin,则可在Matlab\bin下生成 ,如运行mcc –p testwin 则生成. Vc下建立一个基于对话框的文件,然后在对话框里加一个Button控件OnButtonPsd 将上述生成的.c文件的头文件加入到工程的.cpp中,且将#ifdef_cplusplus extern “c”{#end ifc代码声明加入Vc的包含文件和生成的.C的包含文件之间将#ifdef_cplusplus}#end if加入.cpp文件未尾为了简洁且便于处理将生成的c函数稍改动,给出部分代码如下: void CTestpsdwinDlg::OnButtonPsd(){mxArray* x_rhs_;//指向采集数据存放区Fs=23510;//数据采集的频率 nfft=1024;//1024点的fftdouble datax[1024]//采集的数据x_rhs_mxCreateDoubleMatrix(1,1024,mxReal);memcpy(mxGetPr(x_rhs_),datax,1024*sizeof(double));noverlap=512;……………….……………….mccCopy(&Pxx,&Spec);mccCopy(&f,&frevgg_vector);for(int j=0;j<(int)(nfft/2+1);j++){datap[j]=mccGetRealVectorElement(&Pxx, (j+1));//功率谱密度存于datap[]数组dataf[j]=mccGetRealVectorElement(&f, (j+1));//相应频率存于数组dataf[]中}mccFreeMatrix(&Pxx);……………….SendMessageBox(WM_PAINT,0,0);//利用Vc下的图形函数画图Return;}如上生成的程序可读性不太好,而生成的c++代码则可读性较好,但千万注意只能用 Matlab的MATH库,不可用c++的MATH库,否则编译会出错,限于篇幅在此不述。3)利用Matcom调用工具箱中的函数Matcom编译M文件,先将M文件按照与Matcom的cpp库的对应关系翻译为cpp源代码,然后用对应版本的c编译器将cpp文件编译成相应的exe或dll文件,所以第一次运行要指定c编译器的路径,否则无法编译,指定好的编译信息就写在Matcom\bin\文件中,不过这一步按装matcom时,它自动寻找编译器并将其写入文件中,版中使用 OCX控件,因而它支持图形操作。我们依然用上述的文件,不要将图形函数注释掉,利用Mideva来生成可被Vc调用的信号处理程序。运行Mideva在主界面上直打开M文件,在菜单中选择compile to dll,输入testwin..在Matcom debug目录下可以找到这样的几个文件, ,等。 将上述和加入工程中,project/add to project/files并且在相应的文件中加入”” 加连接库:Tools\option\directory\ , 选include选项,加入e:\matcom45\lib (包含) library选项,加入e:\matcom45\lib4) project\add to project\files 文件类型选项选(.lib)将e:\matcom45\lib\加入工程中编译运行。相应代码如下:void CtestmatcomDlg::OnpsdButton(){double datap[512],dataf[512];initM(MATCOM_VERSION);//初始化matcom库Mm Fs,nfft,noverlap;//创建矩阵Mm x=zeros(1,1024);Fs=1024;nfft=1024;noverlap=128;dMm(Pxx_o);dMm(f_o);//创建并命名矩阵datax[];//数据采集的数据存于此数组中for(int i=1;i<=1024;i++){(1,i)=datax[i+1];//给x阵赋值}testwin(Fs,nfft,noverlap,x,i_o,Pxx,f_o);//matcom生成的函数for(i=0;i<513;i++){//取出功率谱密度分析结果dataf[i]=(i+1,1);datap[i]=(i+1,1);}exitM();return;}可见利用Matcom进行M文件转换非常的容易,生成的代码可读性很好,以上的转换同时生成了可供Vc调用的动态连接库,其使用和一般的动态库一样使用。同时需指明Matcom不仅可转换独立的不依赖于其它M文件的M文件,同时可转换调用其它M文件的M文件嵌套。条件是这此M文件在同一个目录下面,如前所述的可直接用上述方法转换,生成了多个重载形式的psd函数结论: 利用Mtlab引擎调用工具箱中的函数可节省大量的系统资源,应用程序整体性能较好,但不可脱离Matlab 的环境运行。用Matlab编译器进行工具箱函数的调用,须转换相应的M文件使其成为独立的M文件,且不支持图形函数,转换的代码可读性不太好。用Matcom 进行转换非常方便,生成的代码可读性很好,支持图形函数,且代码执行的速度比不转换平均要快倍以上。以上程序在Vc++ 中调试通过,以上方法在工程实践中已得到很好的运用。仅供参考,请自借鉴希望对您有帮助
169 浏览 3 回答
137 浏览 2 回答
271 浏览 4 回答
110 浏览 3 回答
178 浏览 4 回答
296 浏览 6 回答
278 浏览 2 回答
252 浏览 5 回答
279 浏览 7 回答
104 浏览 3 回答
332 浏览 4 回答
162 浏览 2 回答
119 浏览 7 回答
298 浏览 2 回答
146 浏览 4 回答