当前位置:文档之家› 实验六 信号和pipe管道通信

实验六 信号和pipe管道通信

实验六 信号和pipe管道通信
实验六 信号和pipe管道通信

第四章 Linux 进程通信(6学时)

实验六信号和pipe管道通信

实验目的

1.了解和掌握Linux信号的原理

2.掌握Linux信号相关函数的使用

实验内容

1.运行以下程序,分析程序的运行结果及运行过程。

#include

#include

#include

static void sig_quit(int);

int

main(void)

{

sigset_t newmask, oldmask, pendingmask;

//设置对信号SIGQUIT的处理函数

if (signal(SIGQUIT, sig_quit) == SIG_ERR)

{

fprintf(stderr, "can't catch SIGQUIT\n");

exit(1);

}

//设置一个空的信号集

sigemptyset(&newmask);

sigaddset(&newmask, SIGQUIT); // 在这个信号集中增加SIGQUIT信号

//在当前进程中增加newmask信号集作为屏蔽信号集,oldmask返回当前进程的信号集 if (sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0)

{

fprintf(stderr, "SIG_BLOCK error\n");

exit(1);

}

for(i=1;i<6;i++){ printf("SIGQUIT信号现在被阻塞!\n");sleep(2);}

//恢复进程的信号集

if (sigprocmask(SIG_SETMASK, &oldmask, NULL) < 0)

{

fprintf(stderr, "SIG_SETMASK error\n");

exit(1);

}

printf("SIGQUIT unblocked\n");

sleep(5);

exit(0);

}

static void sig_quit(int signo)

{

printf("caught SIGQUIT/n");

//恢复进程对SIGQUIT的默认处理

if (signal(SIGQUIT, SIG_DFL) == SIG_ERR)

{

fprintf(stderr, "can't reset SIGQUIT\n");

exit(0);

}

}

(1)10秒钟内按下ctrl+\,观察输出,

(2)10秒之后再按下ctrl+\,输出?再次按下ctrl+\,程序输出?分析程序如何执行。

2、使用alarm,pause,signal函数,.编写程序sleep1,实现sleep函数的功能即输入sleep1 10 可睡眠10秒钟。其中用到的函数 int atoi(const char *nptr) 把字符串转换成整型数。参考课件ch4 P20-22

#include

#include

#include

#include

static void sig_alrm(int signo)

{

printf("睡眠结束!\n");

}

unsigned int sleep1(unsigned int nsecs)

{

if (signal(SIGALRM, sig_alrm) == SIG_ERR)

return(nsecs);

alarm(nsecs); /* 启动定时器*/

pause(); /* 暂停等待下一个信号来唤醒它*/ return(alarm(0)); /* 关闭计时器同时返回睡眠剩余的时间*/ }

main(int argc,char *argv[])

{

if(argc==2)

{

int nsecs=atoi(argv[1]);

printf("睡眠开始!\n");

sleep1(nsecs);

}

}

移动通信实验报告

邮电大学 移动通信实验报告 班级: 专业: : 学号:

班序号: 一、实验目的 (2) 1、移动通信设备观察实验 (2) 2、网管操作实验 (3) 二、实验设备 (3) 三、实验容 (3) 1、TD_SCDMA系统认识 (3) 2、硬件认知 (3) 2.1移动通信设备 (3) 2.2 RNC设备认知 (4) 2.3 Node B设备(基站设备) (6) 2.4 LMT-B软件 (7) 2.5通过OMT创建基站 (8) 四、实验总结 (20) 一、实验目的 1、移动通信设备观察实验 1.1 RNC设备观察实验 a) 了解机柜结构 b) 了解RNC机框结构及单板布局 c) 了解RNC各种类型以及连接方式 1.2 基站设备硬件观察实验 a) 初步了解嵌入式通信设备组成 b) 认知大唐移动基站设备EMB5116的基本结构 c) 初步分析硬件功能设计

2、网管操作实验 a) 了解OMC系统的基本功能和操作 b) 掌握OMT如何创建基站 二、实验设备 TD‐SCDMA 移动通信设备一套(EMB5116基站+TDR3000+展示用板卡)电脑 三、实验容 1、TD_SCDMA系统认识 全称是时分同步的码分多址技术(英文对应Time Division-Synchronous Code Division Multiple Access)。 TD_SCDMA系统是时分双工的同步CDMA系统,它的设计参照了TDD(时分双工)在不成对的频带上的时域模式。运用TDSCDMA这一技术,通过灵活地改变上/下行链路的转换点就可以实现所有3G对称和非对称业务。合适的TDSCDMA时域操作模式可自行解决所有对称和非对称业务以及任何混合业务的上/下行链路资源分配的问题。 TD_SCDMA系统网络结构中的三个重要接口(Iu接口、Iub接口、Uu接口),认识了TD_SCDMA系统的物理层结构,熟悉了TD_SCDMA系统的六大关键技术以及其后续演进LTE。

语音信号处理实验指导书

语音信号处理实验指导书 实验一 语音信号采集与简单处理 一、 实验目的、要求 (1)掌握语音信号采集的方法 (2)掌握一种语音信号基音周期提取方法 (3)掌握短时过零率计算方法 (4)了解Matlab 的编程方法 二、 实验原理 基本概念: (a )短时过零率: 短时内,信号跨越横轴的情况,对于连续信号,观察语音时域波形通过横轴的情况;对于离散信号,相邻的采样值具有不同的代数符号,也就是样点改变符号的次数。 对于语音信号,是宽带非平稳信号,应考察其短时平均过零率。 其中sgn[.]为符号函数 ?? ?? ?<=>=0 x(n)-1sgn(x(n))0 x(n)1sgn(x(n)) 短时平均过零的作用 1.区分清/浊音: 浊音平均过零率低,集中在低频端; 清音平均过零率高,集中在高频端。 2.从背景噪声中找出是否有语音,以及语音的起点。 (b )基音周期 基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。 ∑--= -=1 )]1(sgn[)](sgn[21N m n n n m x m x Z

由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容 易。③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。④基音周期变化范围大,从老年男性的50Hz 到儿童和女性的450Hz ,接近三个倍频程,给基音检测带来了一定的困难。由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。 尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT 、谱图法、小波法等等。 三、使用仪器、材料 微机(带声卡)、耳机,话筒。 四、 实验步骤 (1)语音信号的采集 利用Windows 语音采集工具采集语音信号,将数据保存wav 格式。 采集一组浊音信号和一组清音信号,信号的长度大于3s 。 (2)采用短时相关函数计算语音信号浊音基音周期,考虑窗长度对基音周期计算的影响。采用倒谱法求语音信号基音周期。 (3)计算短时过零率,清音和浊音的短时过零率有何区别。 五、实验过程原始记录(数据,图表,计算) 短时过零率 短时相关函数 P j j n s n s j R N j n n n n ,,1) ()()(1 =-=∑-= ∑--=-=10 )]1(sgn[)](sgn[21N m n n n m x m x Z

信号与系统基础知识

第1章 信号与系统的基本概念 1.1 引言 系统是一个广泛使用的概念,指由多个元件组成的相互作用、相互依存的整体。我们学习过“电路分析原理”的课程,电路是典型的系统,由电阻、电容、电感和电源等元件组成。我们还熟悉汽车在路面运动的过程,汽车、路面、空气组成一个力学系统。更为复杂一些的系统如电力系统,它包括若干发电厂、变电站、输电网和电力用户等,大的电网可以跨越数千公里。 我们在观察、分析和描述一个系统时,总要借助于对系统中一些元件状态的观测和分析。例如,在分析一个电路时,会计算或测量电路中一些位置的电压和电流随时间的变化;在分析一个汽车的运动时,会计算或观测驱动力、阻力、位置、速度和加速度等状态变量随时间的变化。系统状态变量随时间变化的关系称为信号,包含了系统变化的信息。 很多实际系统的状态变量是非电的,我们经常使用各种各样的传感器,把非电的状态变量转换为电的变量,得到便于测量的电信号。 隐去不同信号所代表的具体物理意义,信号就可以抽象为函数,即变量随时间变化的关系。信号用函数表示,可以是数学表达式,或是波形,或是数据列表。在本课程中,信号和函数的表述经常不加区分。 信号和系统分析的最基本的任务是获得信号的特点和系统的特性。系统的分析和描述借助于建立系统输入信号和输出信号之间关系,因此信号分析和系统分析是密切相关的。 系统的特性千变万化,其中最重要的区别是线性和非线性、时不变和时变。这些区别导致分析方法的重要差别。本课程的内容限于线性时不变系统。 我们最熟悉的信号和系统分析方法是时域分析,即分析信号随时间变化的波形。例如,对于一个电压测量系统,要判断测量的准确度,可以直接分析比较被测的电压波形)(in t v (测量系统输入信号)和测量得到的波形)(out t v (测量系统输出信号),观察它们之间的相似程度。为了充分地和规范地描述测量系统的特性,经常给系统输入一个阶跃电压信号,得到系统的阶跃响应,图1-1是典型的波形,通过阶跃响应的电压上升时间(电压从10%上升至90%的时间)和过冲(百分比)等特征量,表述测量系统的特性,上升时间和过冲越小,系统特性越好。其中电压上升时间反映了系统的响应速度,小的上升时间对应快的响应速度。如果被测电压快速变化,而测量系统的响应特性相对较慢,则必然产生较大的测量误差。 信号与系统分析的另一种方法是频域分析。信号频域分析的基本原理是把信号分解为不同频率三角信号的叠加,观察信号所包含的各频率分量的幅值和相位,得到信号的频谱特性。图1-2是从时域和频域观察一个周期矩形波信号的示意图,由此可以看到信号频域和时域的关系。系统的频域分析是观察系统对不同频率激励信号的响应,得到系统的频率响应特性。频域分析的重要优点包括:(1)对信号变化的快慢和系统的响应速度给出定量的描述。例如,当我们要用一个示波器观察一个信号时,需要了解信号的频谱特性和示波器的模拟带宽,当示波器的模拟带宽能够覆盖被测信号的频率范围时,可以保证测量的准确。(2)

Linux系统编程实验六进程间通信

实验六:进程间通信 实验目的: 学会进程间通信方式:无名管道,有名管道,信号,消息队列, 实验要求: (一)在父进程中创建一无名管道,并创建子进程来读该管道,父进程来写该管道(二)在进程中为SIGBUS注册处理函数,并向该进程发送SIGBUS信号(三)创建一消息队列,实现向队列中存放数据和读取数据 实验器材: 软件:安装了Linux的vmware虚拟机 硬件:PC机一台 实验步骤: (一)无名管道的使用 1、编写实验代码pipe_rw.c #include #include #include #include #include #include int main() { int pipe_fd[2];//管道返回读写文件描述符 pid_t pid; char buf_r[100]; char* p_wbuf; int r_num; memset(buf_r,0,sizeof(buf_r));//将buf_r初始化 char str1[]=”parent write1 “holle””; char str2[]=”parent write2 “pipe”\n”; r_num=30; /*创建管道*/ if(pipe(pipe_fd)<0) { printf("pipe create error\n"); return -1; } /*创建子进程*/ if((pid=fork())==0) //子进程执行代码 {

//1、子进程先关闭了管道的写端 close(pipe_fd[1]); //2、让父进程先运行,这样父进程先写子进程才有内容读sleep(2); //3、读取管道的读端,并输出数据 if(read(pipe_fd[0],buf_r, r_num)<0) { printf(“read error!”); exit(-1); } printf(“%s\n”,buf_r); //4、关闭管道的读端,并退出 close(pipe_fd[1]); } else if(pid>0) //父进程执行代码 { //1、父进程先关闭了管道的读端 close(pipe_fd[0]); //2、向管道写入字符串数据 p_wbuf=&str1; write(pipe_fd[1],p_wbuf,sizof(p_wbuf)); p_wbuf=&str2; write(pipe_fd[1],p_wbuf,sizof(p_wbuf)); //3、关闭写端,并等待子进程结束后退出 close(pipe_fd[1]); } return 0; } /*********************** #include #include #include #include #include #include int main() { int pipe_fd[2];//管道返回读写文件描述符 pid_t pid; char buf_r[100]; char* p_wbuf; int r_num;

移动应用开发-实验报告

实验一Android开发基础 实验时间:2018.3.16 实验地点:X501 一、实验目的 1. 掌握Android开发环境的搭建; 2. 了解Android SDK的安装、配置、使用; 3. 熟悉开发工具Android Studio的使用; 4. 了解创建项目并熟悉文件目录结构; 二、实验学时 2学时/次,共2学时 三、实验环境 Android Studio;JDK1.7;PC机 四、实验容和要求 1.Android Studio安装 (1) Android Studio的下载与安装 前提准备工作:安装JDK 并配置JDK 环境变量。 请使用传统的JAVA_HOME 环境变量名称。很多人会被提醒JVM 或者JDK 查找失败,几乎都是因为JDK 版本或者没有使用JAVA_HOME 这个环境变量名称的原因。 ①Android Studio可以从中文社区进行下载,网址为https://www.doczj.com/doc/588680583.html,/。在浏览器中打开该网址,如图1-1所示。 图1-1 Android Studio官方 ②选择合适的平台,进行下载,如图1-2所示。

图1-2 Java platform(JDK) ③安装之前,要确定JDK版本必须是1.7或以上,否则安装之后会报错。双击Android Studio的安装文件,按照提示一步步安装,具体参考教材。不出意外的话,看到图1-3所示的界面,说明Android Studio已经安装成功了。 图1-3 Android Studio已经安装成功 2. 配置Android Studio 安装Android Studio完成之后,运行Android Studio。每一次安装,都会显示图1-4所示的这个界面,用以选择导入Android Studio的配置文件。 第一个选项:使用以前版本的配置文件夹。 第二个选项:导入某一个目录下的配置文件夹。 第三个选项:不导入配置文件夹。 如果你以前使用过Android Studio,可以选择到以前的版本。如果你是第一次使用,可以选择第三项。 图1-4 导入Android Studio配置文件

信号处理实验指导

目录 绪论 (1) 1离散时间信号和系统分析 1.1 离散时间信号产生与运算 (2) 1.2 离散时间系统的时域分析 (9) 1.3 离散时间系统的频域分析 (13) 1.4 离散时间系统频响的零极点确定 (14) 2快速傅立叶变换的应用 2.1 FFT的计算 (17) 2.2 利用FFT进行谱分析 (18) 2.3利用FFT实现快速卷积 (19) 3数字滤波器的设计 3.1数字滤波器的结构 (23) 3.2无限冲激响应(IIR)数字滤波器的设计 (25) 3.3有限冲激响应(FIR)数字滤波器的设计 (27) 4综合应用举例 4.1 语音信号处理 (32) 4.2 电话拨号音的合成与识别 (32)

绪论 数字信号处理主要研究如何对信号进行分析、变换、综合、估计与识别等加工处理的基本理论和方法。随着计算机技术和大规模集成电路技术的发展,数字信号处理以其方便、灵活等特点引起人们越来越多的重视。在40多年的发展过程中,这门学科基本形成了一套完整的理论体系,其中也包括各种快速、优良的算法,而且数字信号处理的理论和技术也在不断、快速地丰富和完善,新理论和新技术也层出不穷。学习这门课程的过程中,容易使人感到数字信号处理的概念抽象难懂,其中的分析方法与基本理论不容易很好地理解与掌握。因此,如何理解与掌握课程中的基本概念、基本原理、基本分析方法以及综合应用所学知识解决实际问题的能力,是本课程学习中所要解决的关键问题。 Matlab是一种面向科学和工程的高级语言,现已成为国际上公认的优秀的科技界应用软件,在世界范围内广为流行和使用。在欧美高等院校里,Matlab已成为大专院校学生、教师的必要基本技能,广泛应用于科学研究、工程计算、教学等。上世纪90年代末和本世纪初Matlab在我国也被越来越多地应用于科研和教学工作中。Matlab是一套功能强大的工程计算及数据处理软件,在工业,电子,医疗和建筑等众多领域均被广泛运用。它是一种面向对象的,交互式程序设计语言,其结构完整又具有优良的可移植性。它在矩阵运算,数字信号处理方面有强大的功能。另外,Matlab提供了方便的绘图功能,便于用户直观地输出处理结果。 本文通过Matlab系列仿真,旨在掌握基本的数字信号处理的理论和方法,提高综合运用所学知识,提高Matlab计算机编程的能力。进一步加强独立分析问题、解决问题的能力、综合设计及创新能力的培养,同时注意培养实事求是、严肃认真的科学作风和良好的实验习惯。

《信号与系统分析基础》第3章习题解答

第三章习题解答 3.2 求下列方波形的傅里叶变换。 (a) 解: 110 2 ()()11()2 t j t t j t t j t t j t j a F j f t e dt e e dt j e t tS e j ωωωωωωω ωω-----=-=?= -==?? (b) 解: 20 00 2 2 ()1 1 1()[]1 (1) 1 (1) t j t t j t t t j t j t t t j t j t j t j t j t j t t F e dt e e dt tde j j j te e dt j e e e j e ωωωωωωωωωωωτ ω τωτω ω τω ωττω----------=-=?= =??-=-=+-= +-???? (c) 解: 1 31 1 2 2 11()()2 211 1 ()()22 1 1 ()cos 2 1 ()2 1()211 12() 2() 2 2 j t j t j t j t j t j t j t j t F t e dt e e e dt e e dt e e j j ωπ π ωππ ωωπ π ωωπ ωππ ωω-------+---+--=?=+?=+=- -+?? ? ()()()()22221 111 [][]2222 j j j j e e e e j j ππππ ωωωωππωω----++=?--?--+

2222sin()sin()cos ()cos () cos 2222()()2222 ππππ ωωωωωωπωππππωωωω-+?++?-?=+== -+-- (d)解: 242 22()()22 22()()2 2 ()()()()2 2 2 2 ()sin 1()21()2112()2() sin[(22() 2() T j t T T j t j t j t T T j t j t T T T j t j t T T T T T T j j j j F t e dt e e e dt j e e dt j e e T e e e e j j j j ωωωωωωωωωωωωωωω--Ω-Ω--Ω--Ω+-Ω--Ω+--Ω--Ω-Ω+-Ω+=Ω?=-= --=-Ω-Ω+Ω---= + =?Ω-?Ω+???)]sin[()] 2()() T j j ωωωωΩ++Ω-Ω+ 3.3依据上题中a,b 的结果,利用傅里叶变换的性质,求题图3.3所示各信号的傅里叶变换. (a) 解:11111()()()f t f t f t =-- 11()f t 就是3.2中(a)的1()f t 如果1()()f t F ω?,则1()()f t F ω-?- 11111111122 2 ()()()()()sin()42 ( )[]sin( )sin ()2 2 2 2 j j a f t f t f t F F t S e e j j τ τ ω ω ωωωτ ωτ τωτ ωττωτ ω-∴=--?--=??-= ? = (b) 解:2()()()f t g t g t στ=+,而()( )2 a g t S τωτ τ? 2()(3)2()a a F S S ωσωω∴=+ 如利用3.2中(a)的结论来解,有: 211'()(3)(1)f t f t f t ττ=+++,其中,'2τστ==. 3211'()()()(3)2()j j a a F e F e F S S ωωττωωωσωω∴=?+?=+ (如()()f t F ω?,则0 0()()j t f t t e F ωω±?) 2()f t

Linux进程间通信(2)实验报告

实验六:Linux进程间通信(2)(4课时) 实验目的: 理解进程通信原理;掌握进程中信号量、共享内存、消息队列相关的函数的使用。实验原理: Linux下进程通信相关函数除上次实验所用的几个还有: 信号量 信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是前一节的共享内存方式的进程间通信。要调用的第一个函数是semget,用以获得一个信号量ID。 int semget(key_t key, int nsems, int flag); key是IPC结构的关键字,flag将来决定是创建新的信号量集合,还是引用一个现有的信号量集合。nsems是该集合中的信号量数。如果是创建新集合(一般在服务器中),则必须指定nsems;如果是引用一个现有的信号量集合(一般在客户机中)则将nsems指定为0。 semctl函数用来对信号量进行操作。 int semctl(int semid, int semnum, int cmd, union semun arg); 不同的操作是通过cmd参数来实现的,在头文件sem.h中定义了7种不同的操作,实际编程时可以参照使用。 semop函数自动执行信号量集合上的操作数组。 int semop(int semid, struct sembuf semoparray[], size_t nops); semoparray是一个指针,它指向一个信号量操作数组。nops规定该数组中操作的数量。 ftok原型如下: key_t ftok( char * fname, int id ) fname就是指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。 当成功执行的时候,一个key_t值将会被返回,否则-1 被返回。 共享内存 共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。首先要用的函数是shmget,它获得一个共享存储标识符。 #include #include #include int shmget(key_t key, int size, int flag); 当共享内存创建后,其余进程可以调用shmat()将其连接到自身的地址空间中。 void *shmat(int shmid, void *addr, int flag); shmid为shmget函数返回的共享存储标识符,addr和flag参数决定了以什么方式来确定连接的地址,函数的返回值即是该进程数据段所连接的实际地

移动通信实验报告

实验一 m序列产生及特性分析实验 一、实验目得 1.了解m序列得性质与特点; 2。熟悉m序列得产生方法; 3.了解m序列得DSP或CPLD实现方法。 二、实验内容 1。熟悉m序列得产生方法; 2.测试m序列得波形; 三、实验原理 m序列就是最长线性反馈移存器序列得简称,就是伪随机序列得一种。它就是由带线性反馈得移存器产生得周期最长得一种序列。 m序列在一定得周期内具有自相关特性.它得自相关特性与白噪声得自相关特性相似。虽然它就是预先可知得,但性质上与随机序列具有相同得性质.比如:序列中“0”码与“1”码等抵及具有单峰自相关函数特性等。 五、实验步骤 1.观测现有得m序列。 打开移动实验箱电源,等待实验箱初始化完成.先按下“菜单”键,再按下数字键“1”,选择“一、伪随机序列”,出现得界面如下所示: ?再按下数字键“1"选择“1m序列产生”,则产生一个周期为15得m序列。 2。在测试点TP201测试输出得时钟,在测试点TP202测试输出得m序列。 1)在TP201观测时钟输出,在TP202观测产生得m序列波形。

图1-1 数据波形图

实验二 WALSH序列产生及特性分析实验 一.实验目得 1。了解Walsh序列得性质与特点; 2。熟悉Walsh序列得产生方法; 3.了解Walsh序列得DSP实现方法。 二.实验内容 1.熟悉Walsh序列得产生方法; 2.测试Walsh序列得波形; 三。实验原理 Walsh序列得基本概念 Walsh序列就是正交得扩频序列,就是根据Walsh函数集而产生.Walsh函数得取值为+1或者—1。图1-3—1展示了一个典型得8阶Walsh函数得波形W1。n阶Walsh函数表明在Walsh函数得周期T内,由n段Walsh函数组成.n阶得Walsh函数集有n个不同得Walsh函数,根据过零得次数,记为W0、W1、W2等等。 t 图2-1 Walsh函数 Walsh函数集得特点就是正交与归一化,正交就是同阶不同得Walsh函数相乘,在指定得区间积分,其结果为0;归一化就是两个相同得Walsh函数相乘,在指定得区间上积分,其平均值为1。 五、实验步骤 1。观测现有得Walsh序列波形 打开移动实验箱电源,等待实验箱初始化完成. 先按下“菜单"键,再按下数字键“1”,选择“一、伪随机序列”,出现得界面如下所示:

数字信号处理实验五

实验五:FIR数字滤波器设计与软件实现 信息学院 10电本2班王楚炘 2010304224 10.5.1 实验指导 1.实验目的 (1)掌握用窗函数法设计FIR数字滤波器的原理和方法。 (2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。 (3)掌握FIR滤波器的快速卷积实现原理。 (4)学会调用MATLAB函数设计与实现FIR滤波器。 2.实验内容及步骤 (1)认真复习第七章中用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理; (2)调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱,如图10.5.1所示; 图10.5.1 具有加性噪声的信号x(t)及其频谱如图(3)请设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。先观察xt的频谱,确定滤波器指标参数。 (4)根据滤波器指标选择合适的窗函数,计算窗函数的长度N,

调用MATLAB函数fir1设计一个FIR低通滤波器。并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt的滤波。绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。 (4)重复(3),滤波器指标不变,但改用等波纹最佳逼近法,调用MATLAB函数remezord和remez设计FIR数字滤波器。并比较两种设计方法设计的滤波器阶数。 提示:MATLAB函数fir1和fftfilt的功能及其调用格式请查阅本书 第7章和第?章; 采样频率Fs=1000Hz,采样周期T=1/Fs; 根据图10.6.1(b)和实验要求,可选择滤波器指标参数:通带截止频率fp=120Hz,阻带截至频率fs=150Hz,换算成数字频率,通带截止频率,通带最大衰为0.1dB,阻带截至频率,阻带最小衰为60dB。]实验程序框图如图10.5.2所示,供读者参考。 Fs=1000,T=1/Fs xt=xtg 产生信号xt, 并显示xt及其频谱 用窗函数法或等波纹最佳逼近法 设计FIR滤波器hn 对信号xt滤波:yt=fftfilt(hn,xt) 1、计算并绘图显示滤波器损耗函数 2、绘图显示滤波器输出信号yt End 图10.5.2 实验程序框图 4.思考题 (1)如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?请写出设计步骤. 答:用窗函数法设计线性相位低通滤波器的设计步骤: a.根据对阻带衰减及过渡带的指标要求,选择窗函数的类型,并估计窗口的长度N; b.构造希望逼近的频率响应函数; c.计算h d(n); d.加窗得到设计结果h(n)=h d(n)w(n)。 (2)如果要求用窗函数法设计带通滤波器,且给定通带上、下截止频率为和,阻带上、下截止频率为和,试求理想带通滤波器的截止频率。 答:希望逼近的理想带通滤波器的截止频率分别为:

信号与系统基础知识

第1章 信号与系统的基本概念 1.1 引言 系统是一个广泛使用的概念,指由多个元件组成的相互作用、相互依存的整体。我们学习过“电路分析原理”的课程,电路是典型的系统,由电阻、电容、电感和电源等元件组成。我们还熟悉汽车在路面运动的过程,汽车、路面、空气组成一个力学系统。更为复杂一些的系统如电力系统,它包括若干发电厂、变电站、输电网和电力用户等,大的电网可以跨越数千公里。 我们在观察、分析和描述一个系统时,总要借助于对系统中一些元件状态的观测和分析。例如,在分析一个电路时,会计算或测量电路中一些位置的电压和电流随时间的变化;在分析一个汽车的运动时,会计算或观测驱动力、阻力、位置、速度和加速度等状态变量随时间的变化。系统状态变量随时间变化的关系称为信号,包含了系统变化的信息。 很多实际系统的状态变量是非电的,我们经常使用各种各样的传感器,把非电的状态变量转换为电的变量,得到便于测量的电信号。 隐去不同信号所代表的具体物理意义,信号就可以抽象为函数,即变量随时间变化的关系。信号用函数表示,可以是数学表达式,或是波形,或是数据列表。在本课程中,信号和函数的表述经常不加区分。 信号和系统分析的最基本的任务是获得信号的特点和系统的特性。系统的分析和描述借助于建立系统输入信号和输出信号之间关系,因此信号分析和系统分析是密切相关的。 系统的特性千变万化,其中最重要的区别是线性和非线性、时不变和时变。这些区别导致分析方法的重要差别。本课程的内容限于线性时不变系统。 我们最熟悉的信号和系统分析方法是时域分析,即分析信号随时间变化的波形。例如,对于一个电压测量系统,要判断测量的准确度,可以直接分析比较被测的电压波形)(in t v (测量系统输入信号)和测量得到的波形)(out t v (测量系统输出信号),观察它们之间的相似程度。为了充分地和规范地描述测量系统的特性,经常给系统输入一个阶跃电压信号,得到系统的阶跃响应,图1-1是典型的波形,通过阶跃响应的电压上升时间(电压从10%上升至90%的时间)和过冲(百分比)等特征量,表述测量系统的特性,上升时间和过冲越小,系统特性越好。其中电压上升时间反映了系统的响应速度,小的上升时间对应快的响应速度。如果被测电压快速变化,而测量系统的响应特性相对较慢,则必然产生较大的测量误差。 信号与系统分析的另一种方法是频域分析。信号频域分析的基本原理是把信号分解为不

实验6 进程及进程间的通信之共享内存

实验6 进程及进程间的通信 ●实验目的: 1、理解进程的概念 2、掌握进程复制函数fork的用法 3、掌握替换进程映像exec函数族 4、掌握进程间的通信机制,包括:有名管道、无名管道、信 号、共享内存、信号量和消息队列 ●实验要求: 熟练使用该节所介绍fork函数、exec函数族、以及进程间通信的相关函数。 ●实验器材: 软件: 1.安装了Ubunt的vmware虚拟机 硬件:PC机一台 ●实验步骤: 1、用进程相关API 函数编程一个程序,使之产生一个进程 扇:父进程产生一系列子进程,每个子进程打印自己的PID 然后退出。要求父进程最后打印PID。 进程扇process_fan.c参考代码如下:

2、用进程相关API 函数编写一个程序,使之产生一个进程 链:父进程派生一个子进程后,然后打印出自己的PID,然后退出,该子进程继续派生子进程,然后打印PID,然后退出,以此类推。

要求:1) 实现一个父进程要比子进程先打印PID 的版本。(即 打印的PID 一般是递增的) 2 )实现一个子进程要比父进程先打印PID 的版本。(即打印的PID 一般是递减的) 进程链1,process_chain1.c的参考代码如下:

进程链2,process_chain2.c的参考代码如下:

3、编写程序execl.c,实现父进程打印自己的pid号,子进程调用 execl函数,用可执行程序file_creat替换本进程。注意命令行参数。 参考代码如下: /*execl.c*/ #include #include #include

数字信号处理实验指导手册

数字信号处理实验指导手册 西安文理学院 机械电子工程系

目录 实验一离散时间信号 (2) 实验二时域采样定理 (7) 实验三离散时间系统 (10) 实验四线性卷积与圆周卷积 (13) 实验五用FFT作谱分析 (16) 实验六用双线性变换法设计IIR数字滤波器 (18) 实验七 FIR滤波器设计 (20)

实验一 离散时间信号 【实验目的】 用MATLAB 实现离散时间信号的表示和运算,掌握MATLAB 的基本命令和编程方法,为后续实验打基础。 【实验原理】 在数字信号处理中,所有的信号都是离散时间信号,因此应首先解决在MATLAB 中如何表示离散信号。 设一模拟信号经A/D 变换后,得到序列信号 }),1(),0(),1(,{)}({)( x x x n x n x -== 由于MATLAB 对下标的约定为从1开始递增,因此要表示)(n x ,一般应采用两个矢量,如: ]5,4,3,2,1,0,1,2,3[---=n ]1,2,5,4,0,2,3,1,1[-=y 这表示了一个含9个采样点的矢量: )}5(,),1(),2(),3({)(x x x x n y ---= 【实验内容】 熟悉下面序列(信号)的产生方法及相关运算 1、 单位采样序列 2、 单位阶跃序列 3、 信号翻转 4、 信号相加 5、 信号折叠 6、 信号移位 【参考程序】 单位采样序列 1、impluse1.m (图1-1) n=10; x=zeros(1,n); x(1)=1;

plot(x,'*'); 2、 impluse2.m (图1-2) n=-5:5; x=[n==0]; stem(x,'*'); 3、impluse3.m (图1-3) n=1:10; n0=3; x=[(n-n0)==1]; plot(x,'*'); 单位阶跃序列 1、steps1.m (图1-4) n=10; x=ones(1,n); plot(x,'*'); 2、steps2.m (图1-5) n=10; x=ones(1,n); x(1)=0; x(2)=0; 图1-1 单位采样序列1 图1-2 单位采样序列2 图1-3 单位采样序列3

实验三 进程间通信

实验三进程间通信(2学时) 一、实验目的 (1)了解什么是信号。 (2)熟悉LINUX系统中进程之间软中断通信的基本原理。 (3)熟悉LINUX支持的管道通信方式。 二、实验内容 (1)编写一段程序,使其现实进程的软中断通信。 即:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按 ctrl+c 键);当捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止: Child Process11 is killed by Parent! Child Process12 is killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止 Parent Process is killed! 要求:运行以下参考程序并分析结果。 <参考程序> #include #include #include #include void waiting(),stop(),alarming(); int wait_mark; main() { int p1,p2; if(p1=fork()) /*创建子进程p1*/ { if(p2=fork()) /*创建子进程p2*/ { //父进程 wait_mark=1; signal(SIGINT,stop); /*接收到^c信号,转stop*/

signal(SIGALRM,alarming);/*接受SIGALRM*/ waiting(); kill(p1,16); /*向p1发软中断信号16*/ kill(p2,17); /*向p2发软中断信号17*/ wait(0); /*同步*/ wait(0); printf("parent process is killed!\n"); exit(0); //会暂时停止目前进程的执行,直到有信号来到或子进程结束。 } else { wait_mark=1; signal(17,stop); signal(SIGINT,SIG_IGN); /*忽略 ^c信号*/ while (wait_mark!=0); lockf(1,1,0); printf("child process2 is killed by parent!\n"); lockf(1,0,0); exit(0); } } else { wait_mark=1; signal(16,stop); signal(SIGINT,SIG_IGN); /*忽略^c信号*/ while (wait_mark!=0); lockf(1,1,0); printf("child process1 is killed by parent!\n"); lockf(1,0,0); exit(0); } } void waiting() { sleep(5); if (wait_mark!=0) kill(getpid(),SIGALRM); } void alarming()

移动通信 GSM实验报告

深圳大学实验报告 课程名称:移动通信 实验项目名称GSM模块配置/设备呼叫/设备短信收发学院:信息工程 专业:通信工程 指导教师: 报告人:学号:班级: 1 实验时间: 实验报告提交时间: 教务处制

实验目的与要求: GSM模块配置1. 了解GSM模块的特点; 2. 了解配置GSM模块的AT命令。GSM 设备短信收发1.了解GSM网络中短消息业务的组成结构;2. 了解GSM网络中短消息收发的过程; 3. 熟悉短消息的数据格式; 4. 熟悉GSM模块进行短信收发的AT命令。 GSM 设备呼叫1.了解GSM网络中话音呼叫的过程; 2. 熟悉用本移动实验箱作为主叫和被叫用户进行语音呼叫;3.熟悉GSM模块进行语音呼叫的AT命令 实验原理:

实验过程及内容: GSM模块配置:1、GSM模块测试(无需插入SIM卡)2、GSM通信速率设置(例:修改GSM模块速率为9600bps)3、GSM模块命令返回结果码数字或字符模式4、GSM模块命令结果码控制5、GSM模块命令回显模式6、保存设置7、版本信息GSM设备短信收发:1.收发短信的准备(1)在PC机上收发短信(2)设置GSM 模块命令返回结果码为字符模式;(3)设置短消息中心(4)设置短信存储区域2.用AT命令控制GSM接收短信过程如下(1)GSM模块接收短消息(2)用TEXT模式读取短消息(3)用PDU模式读取短消息(4)删除短消息3.用AT命令控制GSM 发送短信过程如下(1)用TEXT模式发送英文短消息(2)用PDU模式发送中文短消息4.用配套软件发送短信(中文,英文,中英文混合) GSM设备呼叫:(一)在移动实验箱上进行呼叫(二)在PC机上进行呼叫(1)主叫呼叫和挂机实验:(2)被叫接续实验:(3)GSM模块作为被叫,可以进行摘机和挂机

进程间通信实验报告

进程间通信实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: Linux系统的进程通信机构 (IPC) 允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉Linux支持的消息通讯机制及信息量机制。 实验内容与分析设计: (1)消息的创建,发送和接收。 ①使用系统调用msgget (), msgsnd (), msgrev (), 及msgctl () 编制一长度为1k 的消息的发送和接收程序。 ②观察上面的程序,说明控制消息队列系统调用msgctl () 在此起什么作用? (2)共享存储区的创建、附接和段接。 使用系统调用shmget(),shmat(),sgmdt(),shmctl(),编制一个与上述功能相同的程序。(3)比较上述(1),(2)两种消息通信机制中数据传输的时间。 实验步骤与调试过程: 1.消息的创建,发送和接收: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)在SERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER 。SERVER每接收到一个消息后显示一句“(server)received”。 (3)CLIENT端使用Key为75的消息队列,先后发送类型从10到1的消息,然后退出。最后的一个消息,既是 SERVER端需要的结束信号。CLIENT每发送一条消息后显示一句“(client)sent”。 (4)父进程在 SERVER和 CLIENT均退出后结束。 2.共享存储区的创建,附接和断接: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)SERVER端建立一个KEY为75的共享区,并将第一个字节置为-1。作为数据空的标志.等待其他进程发来的消息.当该字节的值发生变化时,表示收到了该消息,进行处理.然后再次把它的值设为-1.如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER.SERVER 每接收到一次数据后显示”(server)received”. (3)CLIENT端建立一个为75的共享区,当共享取得第一个字节为-1时, Server端空闲,可发送请求. CLIENT 随即填入9到0.期间等待Server端再次空闲.进行完这些操作后, CLIENT退出. CLIENT每发送一次数据后显示”(client)sent”. (4)父进程在SERVER和CLIENT均退出后结束。 实验结果: 1.消息的创建,发送和接收: 由 Client 发送两条消息,然后Server接收一条消息。此后Client Server交替发送和接收消息。最后一次接收两条消息。Client 和Server 分别发送和接收了10条消息。message 的传送和控制并不保证完全同步,当一个程序不再激活状态的时候,它完全可能继续睡眠,造成上面现象。在多次send message 后才 receive message.这一点有助于理解消息转送的实现机理。

移动通信实验报告

实验一GSM通信系统实验(全球数字移动通信系统) 一、实验目的 通过本实验将正交调制及解调的单元实验串起来,让学生建立起GSM通信系统的概念,了解GSM通信系统的组成及特性。 二、实验内容 1、搭建GSM数据通信系统。 2、观察GSM通信系统各部分信号。 三、基本原理 由于GSM是一个全数字系统,话音和不同速率数据的传输都要进行数字化处理。为了将源数据转换为最终信号并通过无线电波发射出去,需要经过几个连续的过程。相反,在接收端需要经过一系列的反过程来重现原始数据。下面我们主要针对数据的传输过程进行描述。 信源端的主要工作有 1、信道编码 信道编码用于改善传输质量,克服各种干扰因素对信号产生的不良影响,但它是以增加比特降低信息量为代价的。 信道编码的基本原理是在原始数据上附加一些冗余比特信息,增加的这些比特是通过某种约定从圆熟数据中经计算产生的,接收端的解码过程利用这些冗余的比特来检测误码并尽可能的纠正误码。如果收到的数据经过同样的计算所得的冗余比特同收到的不一样时,我们就可以确定传输有误。根据传输模式不同,在无线传输中使用了不同的码型。 GSM使用的编码方式主要有块卷积码、纠错循环码、奇偶码。块卷积码主要用于纠错,当解调器采用最大似然估计方法时,可以产生十分有效的纠错结果,纠错循环码主要用于检测和纠正成组出现的误码,通常和块卷积码混合使用,用于捕捉和纠正遗漏的组误差。奇偶码是一种普遍使用的最简单的检测误码的方法。 2、交织 在移动通信中这种变参的信道上,比特差错通常是成串发生的。这是由于持续较长的深衰落谷点会影响到相继一串的比特。但是,信道编码仅在检测和校正单个差错和不太长差错

相关主题
文本预览
相关文档 最新文档