实验09-字符串

实验09-字符串
实验09-字符串

实验九字符串程序设计

班级:学号:姓名:评分:

一.【实验目的】

1、熟练掌握字符串的存取和操作方法方法。

2、进一步掌握C程序的调试方法和技巧。

二.【实验内容和步骤】

1、程序调试题

A.目标:进一步学习掌握程序调试的方法和技巧。

B.内容:参照《实验指导》教材P71“1.调试示例”,从键盘输入一个以回车键结束的字符串(少于80个字符),将它的内容逆向输出。例如:输入“ABCD”,输出“DCBA”。改正程序中的错误,使其实现程序的功能。(注:程序文件保存在“调试示例”文件夹中,文件名为error08_1.cpp)

①调试正确的源程序清单

#include

int main( )

{

int i, k, temp;

char str[80];

printf("input a string: \n");

i = 0;

while((str[i] = getchar( )) != '\n')

i++;

str[i] = '\0';

k = i - 1;

for(i = 0; i < k; i++){ /* 调试时设置断点 */

temp = str[i];

str[i] = str[k];

str[k] = temp;

k--;

} /* 调试时设置断点 */

for(i = 0; str[i] != '\0'; i++)

putchar(str[i]);

printf("\n");

return 0;

}

②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

2、完善程序,并调试运行程序

题目(1)求字符串长度。程序功能:连续输入一批以#结束的字符串(字符串的长度不超过80),遇## 则全部输入结束。统计并输出每个字符串的有效长度。例如:输入:hello 12#abc+0##,表示连续输入2个字符串"hello

12"和"abc+0"。输出:8 5。(注:程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线

之间填入相应的代码,使程序完成该功能。

①调试正确的源程序清单

//程序功能:连续输入一批以#结束的字符串(字符串的长度不超过80),遇## 则全部输入结束,统计并输出

// 每个字符串的有效长度。例如:

// 输入:hello 12#abc+0##,表示连续输入2个字符串"hello 12"和"abc+0"。

// 输出:8 5。

//提示:除在指定位置添加语句之外,请不要改动程序中的其他内容。

#include "stdio.h"

#define MAXLEN 80

int main( )

{

int len,count,i,k;

char ch,oldch,str[MAXLEN];

oldch=' ';

while((ch=getchar())!='#'||oldch!='#')

{

k=0;

while(ch!='#'&& k< MAXLEN-1)

{

str[k++]=ch;

ch=getchar();

}

oldch='#';

str[k]='\0';

//请在两条星线之间填入相应的代码, 输出该字符串并统计其长度。

/*********************************************************/

len=0;

k=0;

while(str[k]!='\0'){

len++;

k++;

}

/*********************************************************/

printf("%d\n",len);

}

}

②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

C语言课程设计报告---字符串处理

课程设计报告 课程设计题目:研究生初试录取 学生:俊 专业:计算机应用技术 班级: 1140302 指导教师:宋文琳 2012年 06 月 23日

目录 一)实验题目 (3) 二)实验目的 (3) 三)实验要求 (3) 四)实验思路 (4) 五)实验过程 (6) 六)实验调试和结果 (9) 七)实验小结 (13)

实验题目 字符串处理 (1)不使用系统库函数,编写多个函数实现; (2)定义字符数组存放字符串,从键盘输入; (3)调用不同的函数,实现字符串的连接、拷贝、比较、求字符串长度、对字符串字符进行排序、查找字符串中某个字符是否存在; (4)分别输出以上字符串处理的结果。 二)实验目的 本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体等相关容的综合应用,使学生能进一步熟悉掌握C语言的基本语法,进一步提升编程能力并逐步培养编程思维,进而不断提高学生解决问题的能力,并为以后的语言学习打下良好的基础。三)实验要求 1. 学生独立完成课程设计的主要容; 2. 按照实验课表安排进行,不得无故旷课; 3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据 个人兴趣选做其它题目; 4.严格按照报告格式撰写课程设计报告; 5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。

四)实验思路1)整体思路

五)实验过程 代码: #include void main() {void lianjie(char a[],char b[]); void kaobei(char a[],char b[]); void bijiao(char a[],char b[]); void qiuchangdu(char a[],char b[]); void paixu(char a[],char b[]); void chazhao(char a[],char b[],char c); char str1[50],str2[40]; char t; int i; printf("需要进行的操作:1.连接;2.拷贝;3.比较;4.求长度;5.排序;6.查找\n"); scanf("%d",&i); if(i==1) {printf("要连接的字符串1:"); scanf("%s",str1); printf("要连接的字符串2:"); scanf("%s",str2); lianjie(str1,str2);} else if(i==2) {printf("拷贝的字符串1:"); scanf("%s",str1); printf("要拷贝的字符串2:"); scanf("%s",str2); kaobei(str1,str2);} else if(i==3)

语音识别系统实验报告材料

语音识别系统实验报告 专业班级:信息安全 学号: 姓名:

目录 一、设计任务及要求 (1) 二、语音识别的简单介绍 2.1语者识别的概念 (2) 2.2特征参数的提取 (3) 2.3用矢量量化聚类法生成码本 (3) 2.4VQ的说话人识别 (4) 三、算法程序分析 3.1函数关系 (4) 3.2代码说明 (5) 3.2.1函数mfcc (5) 3.2.2函数disteu (5) 3.2.3函数vqlbg (6)

3.2.4函数test (6) 3.2.5函数testDB (7) 3.2.6 函数train (8) 3.2.7函数melfb (8) 四、演示分析 (9) 五、心得体会 (11) 附:GUI程序代码 (12) 一、设计任务及要求 实现语音识别功能。 二、语音识别的简单介绍

基于VQ的说话人识别系统,矢量量化起着双重作用。在训练阶段,把每一个说话者所提取的特征参数进行分类,产生不同码字所组成的码本。在识别(匹配)阶段,我们用VQ方法计算平均失真测度(本系统在计算距离d时,采用欧氏距离测度),从而判断说话人是谁。 语音识别系统结构框图如图1所示。 图1 语音识别系统结构框图 2.1语者识别的概念 语者识别就是根据说话人的语音信号来判别说话人的身份。语音是人的自然属性之一,由于说话人发音器官的生理差异以及后天形成的行为差异,每个人的语音都带有强烈的个人色彩,这就使得通过分析语音信号来识别说话人成为可能。用语音来鉴别说话人的身份有着许多独特的优点,如语音是人的固有的特征,不会丢失或遗忘;语音信号的采集方便,系统设备成本低;利用电话网络还可实现远程客户服务等。因此,近几年来,说话人识别越来越多的受到人们的重视。与其他生物识别技术如指纹识别、手形识别等相比较,说话人识别不仅使用方便,而且属于非接触性,容易被用户接受,并且在已有的各种生物特征识别技术中,

音频编辑实验报告

音频编辑实验报告 姓名:戴俏波班级:机电1113班学号:11223064 一.实验内容及任务要求 1. 内容:学习audition的使用 2. 要求:广播剧的设计与制作 二.实验步骤 1、选好广播剧剧本《卖火柴的小女孩》 2、在多轨视图界面用Audition完成素材的录音,步骤如下: (1)执行【选项】|【Windows录音控制台】,打开【录音控制】对 话框,进行相关设置。 (2)设置完毕后关闭【录音控制】对话框。 (3)打开剧本。 (4)单击【传送器】面板中的【录音】按钮,并切换到剧本,使用麦克 风进行剧本表演。完毕后,再次单击【录音】按钮,结束声音的录制。 (5)单击【传送器】面板的【播放】按钮,试听录制的效果。 (6)执行【文件】|【另存为】命令,保存录制的音频文件 3、对录制的音频在编辑模式下进行处理 (1)删减空白音频波形 (2)增加间隔时间 (3)对音频进行降噪处理 (4)修复破音 (5)增大音频音量

(6)为声音添加混响效果 (7)对处理后的音频进行局部修整,或调整局部的音量大小,或去除局部的噪音,使得整个音频听起来更加与谐。 4、给录制的音频添加背景音乐 (1)在网上下载背景音乐《卖火柴的小女孩》与其她配合使用的音乐素材,如风声,铃铛声,马蹄声,马啸声。 (2)将音乐添加到第二个音轨上,配合录制的音频的情境适当删减音频的长度或增加音频的长度。 (3)适当减小背景音乐声音的大小,使得二者相匹配。 5、试听录制的音频与背景音乐一起的效果,根据视听效果局部修整音频。 6、将修改后的广播剧保存成mp3格式。 三.实验感悟 1、由于音频实验就是几周前完成的,开始不知道要写实验报告,所以就没有截屏,只简单地介绍了一下具体进行的音频编辑操作,请老师谅解。 2、在进行音频编辑操作时,只选中自己想编辑的区域进行编辑,不要全部选择。比方说用降噪器效果,如果将音频全部选中,则全部降噪,不能达到预想的效果。 3、录音时不要离话筒太近,也不要太大声,否则波形振幅过大,不容易编辑而且容易失真。录音时尽量保持周围无噪音。 4、要及时保存,否则很容易丢失音频。

实验三 数组和字符串

实验三数组和字符串 一、实验目的 1.掌握Java中的数组定义、引用 2.掌握向量的基本概念和应用技术 3.掌握使用字符串String类处理字符串的方法 4.掌握使用字符串StringBuffer类处理字符串的方法 5.掌握Date类以及Calendar类的常用方法; 二、实验内容 1.使用https://www.360docs.net/doc/3316353598.html,ng.Math类,生成100 个100~999 之间的随机整数,找出他们之中的最大的和最小的,并统计随机产生的大于300 的整数个数。 package exercise; publicclass shiyan3_1 { publicstaticvoid main(String [] args) { int count=0; int max=0; int min=Integer.MIN_VALUE; int num[]=newint[100];//声明并创建一个具有100 个元素的整型数组对象num int i; for(i=1;i<=100;i++) { num[i-1]=100+(int)(Math.random()*899); System.out.print(num[i-1]+"\t");//随机产生一个100~999 之间的随机整数 if(i % 10 == 0) System.out.println();//输出当前产生的随机数,并一行输出10 个数 if(num[i-1]>max) max=num[i-1]; if(num[i-1]300) count++; } System.out.println("最大的随机整数是:"+max); System.out.println("最小的随机整数是:"+min); System.out.println("大于300 的整数个数是:"+count); } }

语音信号处理实验报告

语音信号处理实验 班级: 学号: 姓名: 实验一基于MATLAB的语音信号时域特征分析(2学时)

1)短时能量 (1)加矩形窗 a=wavread('mike.wav'); a=a(:,1); subplot(6,1,1),plot(a); N=32; for i=2:6 h=linspace(1,1,2.^(i-2)*N);%形成一个矩形窗,长度为2.^(i-2)*N En=conv(h,a.*a);% 求短时能量函数En subplot(6,1,i),plot(En); if(i==2) ,legend('N=32'); elseif(i==3), legend('N=64'); elseif(i==4) ,legend('N=128'); elseif(i==5) ,legend('N=256'); elseif(i==6) ,legend('N=512'); end end

00.51 1.52 2.5 3 x 10 4 -1 1 x 10 4 024 x 10 4 05 x 10 4 0510 x 10 4 01020 x 10 4 02040 (2)加汉明窗 a=wavread('mike.wav'); a=a(:,1); subplot(6,1,1),plot(a); N=32; for i=2:6 h=hanning(2.^(i-2)*N);%形成一个汉明窗,长度为2.^(i-2)*N En=conv(h,a.*a);% 求短时能量函数En subplot(6,1,i),plot(En); if(i==2), legend('N=32'); elseif(i==3), legend('N=64'); elseif(i==4) ,legend('N=128');

音频技术实验报告

实验编号:四川师大《声音媒体技术》实验报告 2017年11月5日计算机科学学院级班实验名称:声音信号的编辑处理 姓名:学号:指导老师:实验成绩: 实验录音系统的连接和使用 一.实验目的及要求 (1)掌握录音系统的连接方法; (2)熟悉录音系统相应设备的功能,并熟练使用; (3)掌握录音系统功率匹配、阻抗匹配的原理; 二.实验内容 (1)利用阻抗匹配、功率匹配原理,实现录音系统连接; (2)熟练掌握阻抗匹配、功率匹配实现录音系统连接的工作原理; (3)熟悉录音系统各类设备的操作使用; 三.实验主要流程、步骤(该部分如不够填写,请另加附页) 1.利用阻抗匹配、功率匹配原理,实现录音系统连接。 (1)老师介绍调音台的各输入与输出端子的功能,以及其控制按钮的名称和作用。 (2)用转换头将电容式话筒连接到调音台,电容式话筒的插头插在1和2路录音孔中,(遵循阻抗匹配原理,一定要注意传输线的特性阻抗与所接负载阻抗的大小相等且相位相同,即传输线的输入端或输出端处于阻抗匹配状态); (3)再把监听耳机的插头插在监听插口。 (4)把调音台的输出端用连接线与电脑的主机连接,给电脑传送音频信号,(遵循阻抗匹配原理,电脑的功率要和传输线的输出功率匹配); (5)最后连接电源线 (6)MONITOR是总监听音量旋钮,调节该通路在监听线路中的音量大小。.通过调节HIGH、MIDDLE、LOW三段均衡器旋钮来调节声音大小打开电脑进行调试,测试录音能否正常工作。 2.熟练掌握阻抗匹配、功率匹配实现录音系统连接的工作原理。 (1)阻抗匹配是指负载阻抗与激励源内部阻抗相适配,得到最大功率输出的一种工作状态,阻抗匹配则传输功率大,内阻等于负载时,输出功率最大,此时阻抗匹配。 (2)设备输出功率要与负载阻抗一致。 3.熟悉录音系统各类设备的操作使用。 (1)POWER ON是调音台开关,当 ON 的一边被按下时,调音台便接通电源; (2)MIC是麦克风输入接口,LINE是高电平输入接口,MONITOR是监听输出接口; (3)电容式话筒的敏感度及其高,在录制声音史应该对准说话的人; (4)在调音台每一路输入通道上都有一组均衡旋钮,HIGH是高频,MID是中频,LOW是低频,高中低频率旋钮向左(顺时针)旋时,对应的频段就会得到提升,反之衰减。 四.实验结果的分析与评价(该部分如不够填写,请另加附页 1.阻抗匹配的方法有两种,一种是改变阻抗力,另一种是调整传输线的长度。 2.调音台可对输入的不同电平不同阻抗的音源信号进行放大、衰减、动态调整等,用附 带的均衡器对信号各频段进行处理,调整各通道信号的混合比例后,对各通道进行分配并送至各个接收端,控制现场扩声信号及录制信号。 3.调音台的输入信号大体上分为低阻话筒信号输入和高阻线路信号输入两种。 4.调音台输入插口基本可以分为3种:TRS,XLR,RCA。

音频功率放大器实验报告

一、实验目的 1)了解音频功率放大器的电路组成,多级放大器级联的特点与性能; 2)学会通过综合运用所学知识,设计符合要求的电路,分析并解决设计过程中遇到的问题,掌握设计的基本过程与分析方法; 3)学会使用Multisim、Pspice等软件对电路进行仿真测试,学会Altium Designer使用进行PCB制版,最后焊接做成实物,学会对实际功放的测试调试方法,达到理想的效果。 4)培养设计开发过程中分析处理问题的能力、团队合作的能力。 二、实验要求 1)设计要求 设计并制作一个音频功率放大电路(电路形式不限),负载为扬声器,阻抗8Ω。要求直流稳压电源供电,多级电压、功率放大,所设计的电路满足以下基本指标: (1)频带宽度50Hz~20kHz,输出波形基本不失真; (2)电路输出功率大于8W; (3)输入阻抗:≥10kΩ; (4)放大倍数:≥40dB; (5)具有音调控制功能:低音100Hz处有±12dB的调节范围,高音10kHz 处有±12dB的调节范围; (6)所设计的电路具有一定的抗干扰能力; (7)具有合适频响宽度、保真度要好、动态特性好。 发挥部分: (1)增加电路输出短路保护功能; (2)尽量提高放大器效率; (3)尽量降低放大器电源电压; (4)采用交流220V,50Hz电源供电。 2)实物要求 正确理解有关要求,完成系统设计,具体要求如下: (1)画出电路原理图; (2)确定元器件及元件参数; (3)进行电路模拟仿真; (4)SCH文件生成与打印输出;

(5)PCB文件生成与打印输出; (6)PCB版图制作与焊接; (7)电路调试及参数测量。 三、实验内容与原理 音频功率放大器是一种应用广泛、实用性强的电子音响设备,它主要应用于对弱音频信号的放大以及音频信号的传输增强和处理。按其构成可分为前置放大级、音调控制级和功率放大级三部分,如图1所示。 v 图1 音频功率放大器的组成框图 1)前置放大级 音频功率放大器的作用是将声音源输入的信号进行放大,然后输出驱动扬声器。声音源的种类有多种,如传声器(话筒)、电唱机、录音机(放音磁头)、CD 唱机及线路传输等,这些声音源的输出信号的电压差别很大,从零点几毫伏到几百毫伏。一般功率放大器的输入灵敏度是一定的,这些不同的声音源信号如果直接输入到功率放大器中的话,对于输入过低的信号,功率放大器输出功率不足,不能充分发挥功放的作用;假如输入信号的幅值过大,功率放大器的输出信号将严重过载失真,这样将失去了音频放大的意义。所以一个实用的音频功率放大系统必须设置前置放大器,以便使放大器适应不同的输入信号,或放大,或衰减,或进行阻抗变换,使其与功率放大器的输入灵敏度相匹配。另外在各种声音源中,除了信号的幅度差别外,它们的频率特性有的也不同,如电唱机输出信号和磁带放音的输出信号频率特性曲线呈上翘形,即低音被衰减,高音被提升。对于这样的输入信号,在进行功率放大器之前,需要进行频率补偿,使其频率特性曲线恢复到接近平坦的状态,即加入频率均衡网络放大器。 对于话筒和线路输入信号,一般只需将输入信号进行放大和衰减,不需要进行频率均衡。前置放大器的主要功能一是使话筒的输出阻抗与前置放大器的输入阻抗相匹配;二是使前置放大器的输出电压幅度与功率放大器的输入灵敏度相匹配。由于话筒输出信号非常微弱,一般只有100μV~几毫伏,所以前置放大器输入级的噪声对整个放大器的信噪比影响很大。前置放大器的输入级首先采用低噪声电路,对于由晶体管组成的分立元件组成的前置放大器,首先要选择低噪声的晶体管,另外还要设置合适的静态工作点。由于场效应管的噪声系数一般比晶体管小,而且它几乎与静态工作点无关,在要求高输入阻抗的前置放大器的情况下,

实验3MATLAB矩阵分析与处理和字符串操作实...

实验三 MATLAB 矩阵分析与处理、字符串操作 一、实验目的 1.掌握生成特殊矩阵的方法 2.熟练掌握矩阵的特殊操作及一些特殊函数 3.熟练掌握MATLAB 的字符串操作 4.掌握MATLAB 矩阵的关系运算及逻辑运算法则 二、实验内容 1.特殊矩阵分析与处理操作 常用的产生通用特殊矩阵的函数有:zeros( );ones( );eye( );rand( );randn( ). 下面建立随机矩阵。 (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶随机矩阵。 说明:产生(0 ,1)区间均匀分布随机矩阵使用rand 函数,假设得到了一组满 足(0,1)区间均匀分布的随机数x i ,则若想得到任意[a,b]区间上均匀分布的随机数,只需要用i i x a b a y )(-+=计算即可。产生均值为0、方差为1的标准正态分布随机矩阵使用randn 函数,假设已经得到了一组标准正态分布随机数x i ,如果想要更一般地得到均值为i i x y ,、σμσμ+=可用的随机数方差为2计算出来。针对本例,命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5) 建立对角阵。 diag( )函数除了可以提取矩阵的对角线元素以外,还可以用来建立对角矩阵。 设V 为具有m 个元素的向量,diag(V)将产生一个m*m 对角矩阵,其主对角线元素即为向量V 的元素。例如: diag([1,2,-1,4])

ans= 40000 10000 20000 1 diag(V)函数也有另一种形式diag(V ,k),其功能是产生一个n*n(n=m+|k|)的对角矩阵,其第k 条对角线的元素即为向量V 的元素。例如: diag(1:3,-1) ans=03000 0200 0010 000 矩阵的旋转 函数rot90(A,k)表示将矩阵A 以90度为单位对矩阵按逆时针方向进行k 倍的旋转。 rem 与mod 函数的区别 练习: 1> 写出完成下列操作的命令。 (1)建立3阶单位矩阵A 。eye(3) (2)建立5*6随机矩阵A ,其元素为[100,200]范围内的随机整数。 A=100+(200-100)*rand(5,6) (3)产生均值为1,方差为0.2的500个正态分布的随机数。 B=1+sqrt(0.2)*randn(50,10) (4)产生和A 同样大小的零矩阵。 zeros(size(A)) (5)将矩阵A 主对角线的元素加30。 B=eye(5,6)*30 A+B (6)从矩阵A 提取主对角线元素,并以这些元素构成对角阵。 B=diag(diag(A)’) 注:转置是把列向量转变成行向量。 2> 先建立5*5的矩阵A ,然后将A 的第一行元素乘以1,第二行元素乘以2,…,第五行乘以5。(提示:用一个对角矩阵左乘一个矩阵时,相当于用对角阵的

语音信号处理实验报告

通信与信息工程学院 信息处理综合实验报告 班级:电子信息工程1502班 指导教师: 设计时间:2018/10/22-2018/11/23 评语: 通信与信息工程学院 二〇一八年 实验题目:语音信号分析与处理 一、实验内容 1. 设计内容 利用MATLAB对采集的原始语音信号及加入人为干扰后的信号进行频谱分析,使用窗函数法设计滤波器滤除噪声、并恢复信号。 2.设计任务与要求 1. 基本部分

(1)录制语音信号并对其进行采样;画出采样后语音信号的时域波形和频谱图。 (2)对所录制的语音信号加入干扰噪声,并对加入噪声的信号进行频谱分析;画出加噪后信号的时域波形和频谱图。 (3)分别利用矩形窗、三角形窗、Hanning窗、Hamming窗及Blackman 窗几种函数设计数字滤波器滤除噪声,并画出各种函数所设计的滤波器的频率响应。 (4)画出使用几种滤波器滤波后信号时域波形和频谱,对滤波前后的信号、几种滤波器滤波后的信号进行对比,分析信号处理前后及使用不同滤波器的变化;回放语音信号。 2. 提高部分 (5)录制一段音乐信号并对其进行采样;画出采样后语音信号的时域波形和频谱图。 (6)利用MATLAB产生一个不同于以上频段的信号;画出信号频谱图。 (7)将上述两段信号叠加,并加入干扰噪声,尝试多次逐渐加大噪声功率,对加入噪声的信号进行频谱分析;画出加噪后信号的时域波形和频谱图。 (8)选用一种合适的窗函数设计数字滤波器,画出滤波后音乐信号时域波形和频谱,对滤波前后的信号进行对比,回放音乐信号。 二、实验原理 1.设计原理分析 本设计主要是对语音信号的时频进行分析,并对语音信号加噪后设计滤波器对其进行滤波处理,对语音信号加噪声前后的频谱进行比较分析,对合成语音信号滤波前后进行频谱的分析比较。 首先用PC机WINDOWS下的录音机录制一段语音信号,并保存入MATLAB软件的根目录下,再运行MATLAB仿真软件把录制好的语音信号用audioread函数加载入MATLAB仿真软件的工作环境中,输入命令对语音信号进行时域,频谱变换。 对该段合成的语音信号,分别用矩形窗、三角形窗、Hanning窗、Hamming窗及Blackman窗几种函数在MATLAB中设计滤波器对其进行滤波处理,滤波后用命令可以绘制出其频谱图,回放语音信号。对原始语音信号、合成的语音信号和经过滤波器处理的语音信号进行频谱的比较分析。 2.语音信号的时域频域分析 在Matlab软件平台下可以利用函数audioread对语音信号进行采样,得到了声音数据变量y,同时把y的采样频率Fs=44100Hz放进了MATALB的工作空间。

实验09-字符串

实验九字符串程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、熟练掌握字符串的存取和操作方法方法。 2、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:参照《实验指导》教材P71“1.调试示例”,从键盘输入一个以回车键结束的字符串(少于80个字符),将它的内容逆向输出。例如:输入“ABCD”,输出“DCBA”。改正程序中的错误,使其实现程序的功能。(注:程序文件保存在“调试示例”文件夹中,文件名为error08_1.cpp) ①调试正确的源程序清单 #include int main( ) { int i, k, temp; char str[80]; printf("input a string: \n"); i = 0; while((str[i] = getchar( )) != '\n') i++; str[i] = '\0'; k = i - 1; for(i = 0; i < k; i++){ /* 调试时设置断点 */ temp = str[i]; str[i] = str[k]; str[k] = temp; k--; } /* 调试时设置断点 */ for(i = 0; str[i] != '\0'; i++) putchar(str[i]); printf("\n"); return 0; } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 2、完善程序,并调试运行程序 题目(1)求字符串长度。程序功能:连续输入一批以#结束的字符串(字符串的长度不超过80),遇## 则全部输入结束。统计并输出每个字符串的有效长度。例如:输入:hello 12#abc+0##,表示连续输入2个字符串"hello

《语音信号处理》实验报告材料

实用 中南大学 信息科学与工程学院 语音信号处理 实验报告 指导老师:覃爱娜 学生班级:信息0704 学生名称:阮光武 学生学好:0903070430 提交日期:2010年6月18日

实验一 语音波形文件的分析和读取 一、实验的任务、性质与目的 本实验是选修《语音信号处理》课的电子信息类专业学生的基础实验。通过实验: (1)掌握语音信号的基本特性理论:随机性,时变特性,短时平稳性,相关性等; (2)掌握语音信号的录入方式和*.WAV音波文件的存储结构; (3)使学生初步掌握语音信号处理的一般实验方法。 二、实验原理和步骤: WAV文件格式简介 WAV文件是多媒体中使用了声波文件的格式之一,它是以RIFF格式为标准。每个WAV文件的头四个字节就是“RIFF”。WAV文件由文件头和数据体两大部分组成,其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。常见的WAV声音文件有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。采样率是指声音信号在“模拟→数字”转换过程中,单位时间内采样的次数;采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为8位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。WAV文件数据块包含以脉冲编码调制(PCM)格式表示的样本。在单声道WAV文件中,道0代表左声道,声道1代表右声道;在多声道WAV文件中,样本是交替出现的。WAV文件的格式见表1。

多媒体实验报告:声音的采集与处理

深圳大学实验报告 课程名称:多媒体技术及应用 实验项目名称:声音采集与处理 学院:传播学院 专业: 指导教师:王志强 报告人:刘立娜学号: 2012080286 班 级:4 实验报告提交时间: 2013.03.30 教务处制

一、实验目的与要求 1.通过实验加深对声音数字化的理解。 2.学会正确连接耳麦以及设置录音和放音的方法。 3.掌握声音录制方法并从网上下载音频文件。 4.掌握一种数字音频编辑软件的使用方法。 二、实验方法及步骤 1.实验方法:运用以前了解到的知识内容,在通过阅读书上的实验步骤进行操作。 2.实验步骤 ①Audition的启动与退出 ②录制音频、播放音频、导入音频 ③音频的剪辑 ④音频的特效 三、实验过程及内容 1.Audition的启动与退出 Audition是集声音录制、音频混合和编辑于一身的音频处理软件,它的主要功能包括录音、混音、音频编辑、效果处理、降噪、音频压缩与刻录音乐CD等,还可以与其它音频软件或视频软件协同合作。 Audition提供广泛的、灵活的工具箱,完全能够满足专业录音和专业视频用户的需求。利用Audition,可以录制多轨文件、编辑音频文件、创建原始音乐文件、混缩无限的音频轨道。 启动计算机进入Windows后,可以用鼠标单击任务栏中的“开始”在弹出的开始菜单中,将鼠标指针移到“所有程序—Adobe Audition3.0”菜单命令上,单击即可启动。或把 Audition快捷方式一到桌面上来,单击即可。

图2.1Audition应用程序窗口 如果要退出Audition,可以选择“文件—退出”菜单命令,或按Ctrl+Q组合键,也可以直接单击Audition应用程序窗口右上角的“关闭”在退出之前,如果有已修改的但未存盘的文件,系统会提示保存它。或者点击左上角的“文件—保存”。 图2.2保存提示图2.3 “另存为“对话框 2.录音、播放音频、导入音频 1)录音的操作过程:(单轨录音) 1.选择“文件—新建”菜单命令,这时会出现“新建波形”会话框,如图 2.4所示。选择适当的采样频率、采样分辨率和声道数,如选取44100Hz,16-bit和立体声就可以到达CD 音频效果。 图2.4“新建波形”对话框 2.单击“传送器”控制面板中的红色“录音”按钮,开始录音。对准话筒进行录音,完成后单击“传送器”控制面板的“停止”按钮即可。我们还可以通过控制时间长短来录音,在编辑视图中,选择“选项”菜单中的“时间录音模式”命令。在“传送器”控制面板中单击“录音”这时会出现“定时录音模式”对话框,如图2.5所示。在该对话框中,可以设置录制的时间长短和开始录音。设置完毕,单击“确定”开始按设置进行录音。 图2.5“定时录音模式”对话框

实验5字符串的操作

博客网站设定了校验密码的规则,编写方法检验一个字符串是否是合法的密码。规则如下: 密码长度在8-16 之间 密码只能包含字母和数字 密码必须存在至少2 个数字如果用户输入的密码符合 2. import java.util.Scanner; 3. import java.util.regex.Pattern; 4. public class Check { 5. public static void main(String[] args) { 6. System.out.println("请输入密码:"); 7. Scanner sc = new Scanner(System.in); 8. String str = sc.next(); 9. Check ch = new Check(); 10. ch.checkup(str); 11. sc.close(); 12. } 13. 14. public void checkup(String str) { 15. String patternStr1 = "([0-9]|[a-zA-Z]){8,16}"; 16. String patternStr2 = ".*\\d.*\\d.*"; 17. boolean result1 = Pattern.matches(patternStr1, str); 18. boolean result2 = Pattern.matches(patternStr2, str); 19. if (result1 && result2) { 20. System.out.println(" valid password"); 21. } else { 22. System.out.println(" Invalid password "); 23. } 24. } 25. } 26. String patternStr2 = ".*\\d.*\\d.*"; 27. boolean result1 = Pattern.matches(patternStr1, str); 28. boolean result2 = Pattern.matches(patternStr2, str); 29. if (result1 && result2) { 30. System.out.println(" valid password"); 31. } else { 32. System.out.println(" Invalid password "); 33. } 34. } 35. } 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到Student 类中作为类的私有属性。创建一个Student 类型的对象数组,对学号进行升序排序并输出 /*从键盘输入多行文本,格式如下: 学生端名称,姓名,班级名称,学生ID,注册时间 姜涛,姜涛,,20092212232,2011-11-4 9:06:56

实验四 数组及其字符串的处理

实验四数组及其字符串的处理 1.输入一串英文字母,统计每个字母(不区分大小写)出现的次数。(输 出统计结果时一律显示为小写字母) 如输入:Good 则输出:字母d有1个 字母g有1个 字母o有2个 请根据提示填空,使程序实现相应功能。 #include main() { char ch[10000]; //用于保存输入的字母串 int nnum[26]=【1】;/* 赋初值,使各元素值为0 nnum用于存储各字母出现的次数, 因字母表共有26个字母,因此元素个数为26 */ int i,j; printf("请输入一串字母\n"); scanf("%s",【2】);//读取字符串 i=0;//变量i用于遍历整个字符串各元素,初值为0,表示从字符数组首元素开始 while(【3】) //依次读取各元素,直至遇到字符串结束符’\0’ { j=(ch[i]>=65&&ch[i]<=90)?ch[i]-65:ch[i]-97; /*若输入为字母,则用j 保存其在字母表中的位 次*/ if (【4】)nnum[j]++;//若j值不超限,则将该字母累计数加1 【5】;// 改变i值,换至下一个元素 } for(i=0;i<26;i++) if(nnum[i]!=0) printf("字母%c有%d个\n",97+i,【6】); //按题目要求输出结果 return; } 编程题 2.输入10个整数存入数组,找出其中的最大数及其位置。 (位置从0开始编号)

3.求裴波那契数列(1 1 2 3 5 8 13 21 34……)的前18项。 4.求字符串长度(实现strlen 函数的功能) 提示:可参考第1题。 5.输入一个5*5的矩阵(#define N 5),求 (1)所有元素的和 (2)主对角线元素之和 (3)最大值及最小值所在位置 #include main() { double mat[5][5]; int i,j; 【此处补充定义其它所需变量】 for(i=0;i<5;i++) for (j=0;j<5;j++) scanf("%lf",&mat[i][j]); 【完成其余代码,实现该题(1)(2)(3)的功能】 return; }

语音信号处理实验报告11

实验一 语音信号的时域分析 一、 实验目的、要求 (1)掌握语音信号采集的方法 (2)掌握一种语音信号基音周期提取方法 (3)掌握语音信号短时能量和短时过零率计算方法 (4)了解Matlab 的编程方法 二、 实验原理 语音是一时变的、非平稳的随机过程,但由于一段时间内(10-30ms)人的声带和声道形状的相对稳定性,可认为其特征是不变的,因而语音的短时谱具有相对稳定性。在语音分析中可以利用短时谱的这种平稳性,将语音信号分帧。 10~30ms 相对平稳,分析帧长一般为20ms 。 语音信号的分帧是通过可移动的有限长度窗口进行加权的方法来实现的。几种典型的窗函数有:矩形窗、汉明窗、哈宁窗、布莱克曼窗。 语音信号的能量分析是基于语音信号能量随时间有相当大的变化,特别是清音段的能量一般比浊音段的小得多。定义短时平均能量 [][]∑∑+-=∞-∞=-=-= n N n m m n m n w m x m n w m x E 122)()()()( 下图说明了短时能量序列的计算方法,其中窗口采用的是直角窗。 过零就是信号通过零值。对于连续语音信号,可以考察其时域波形通过时间轴的情况。而对于离散时间信号,如果相邻的取样值改变符号则称为过零。由此可以计算过零数,过零数就是样本改变符号的次数。单位时间内的过零数称为平

均过零数。 语音信号x (n )的短时平均过零数定义为 ()[]()[]()()[]()[]() n w n x n x m n w m x m x Z m n *--=---= ∑∞ -∞=1sgn sgn 1sgn sgn 式中,[]?sgn 是符号函数,即 ()[]()()()()???<-≥=01 01sgn n x n x n x 短时平均过零数可应用于语音信号分析中。发浊音时,尽管声道有若干个共振峰,但由于声门波引起了谱的高频跌落,所以其语音能量约集中干3kHz 以下。而发清音时.多数能量出现在较高频率上。既然高频率意味着高的平均过零数,低频率意味着低的平均过零数,那么可以认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数。然而这种高低仅是相对而言,没有精确的数值关系。 短时平均过零的作用 1.区分清/浊音: 浊音平均过零率低,集中在低频端; 清音平均过零率高,集中在高频端。 2.从背景噪声中找出是否有语音,以及语音的起点。 基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。 由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的

声音处理实验报告

沈阳师范大学 现代教育技术实验报告 实验题目音频资源的处理 学号姓名张慧专业英语年级10级 指导教师薛峰提交时间2013-04-03 一、实验目的 1. 掌握声音文件的基本剪辑方法 2.掌握录音的方法 3. 掌握调整音量的方法 4.掌握降噪的方法 5.掌握混音的方法 二、实验内容及要求 1、打开“音频实践课”文件夹中的“剪辑.mp3”文件,将声音的57秒-1分15秒内的波形复制到一个新的文件中,然后,将新文件的音量降低3分贝,最后给声音的开头和结尾分别作淡入和淡出的操作,最后保存声音,文件名为“基本剪辑.mp3”(要求写出处理的步骤并且提供相应的操作截图) 2、将“音频实践课”文件夹中的“伊利优酸乳-极限自行车篇15秒.wmv”视频文件中的声音录制出来,保存为mp3格式,文件名为“录音.mp3”(要求写出处理的步骤并且提供相应的操作截图) 3、将“音频实践课”文件夹中的“噪音.mp3”文件中噪音去掉,然后直接保存(要求写出处理的步骤并且提供相应的操作截图) 4、使用多轨界面将“音频实践课”文件夹中的“背影.wav”和“春风.wav”混缩为一段配乐得朗诵,注意:背景音乐长度和音量要适当。最后将文件混缩另存为“配乐朗诵.mp3”(要求写出处理的步骤并且提供相应的操作截图) 三、实验过程和具体步骤 第一题 1.启动audition,文件--打开文件“剪辑.mp3”,单击确定。 2.再新建一个音频“未命名”,单击确定。 3.在选择中输入开始和结束的时间,再单击选择框。在选中的区域单击右键复制 4.打开未命名,在音频栏中单击右键,粘贴。 5.在选中的区域中的音量调节钮向下拖拽,调小3分贝 6.在开始和结尾选择淡入淡出选项,做淡入淡出处理 7.将声音保存为“音频剪辑.MP3”。 第二题 打开音量控制面板,选择“选项-属性”菜单,选择录音,勾选Stereo Mix选项,然后单击确定。调整完成后,转为录音控制菜单,勾选Stereo Mix选项,然后将其最小化。打开audition软件,创建一个新波形,按下“录音”按钮,然后打开“伊利优酸乳-极限自行车篇15秒.wmv”进行播放,此时则开始录制视频中声音,产生波形,单击“文件-另存为”弹

实验六字符及字符串处理

实验六字符及字符串处理 一、实验目的 1.掌握头文件ctype.h的用法; 2.掌握常用函数isalpha、isdigit、isspace、isupper、islower、toupper、tolower等常用函数的使用。 3.掌握常用字符串处理函数strcmp、strcat等的模拟。 二、实验内容 1.字符处理练习。编写一个程序提示用户输入一系列字符,只提示一次。在循环中使用scanf(“%c”,…)语句,一次读入一个字符。根据输入内容生成如下输出结果:一次一行,回显输入字符;调用isalpha()检查是否为字母,若是调用touper()函数将其转换为大写字母,如果不是,则打印出一条错误信息,如果字符为句点,打印一条说明信息后退出。 2.回文。设计一个程序测试一条语句是否是回文:即从前向后读和从后向前读的字母都是相同的。首先提示用户输入一条语句。使用getchar一次读入所有字符,直至出现句号为止。读取过程中要求:(1)回显输入字符;(2)调用tolower()函数将每个字符转换成小写;(3)计算读入字符的个数(包括句号在内);(4)将转换后的字符保存在数组的下一个元素中。算法提示:从数组的结尾和开始位置一起比较字母。比较第1个和最后一个,第2个和倒数第2个,依此类推。如果有一对无法匹配,则退出循环后宣布该条语句不是回文。如果一直进行到语句中内始科没有出现问题,则停止然后宣布输入语句为回文。假设输入内容不会超过80个字符。 3.不用库函数模拟strcat和strcmp函数。 三、选做内容 1.检测字符。使用字符分类函数将字符分成几个类:大写字母、小写字母、数字、代白字符和其他符号。编写一个函数完成测试。在主函数中读取一系列字符,直至遇到句号为止。回显每个输入字符,并找印出相应的标注。计算每个类别出现的次数。处理句号的同时为句号计数,然后打印出字符总额并退出程序。算法提示:使用一个计数器数组,递增计数器时可用枚举常量作为数组的下标。 2.编写一个程序在表格中显示ASCII代码,类似附录中的ASCII表格。不要试图直接打印无法打印的字符,跳过列出十六进制代码的列。 四、常见错误 1.char和int。理论上讲,在C语言中,字符就是极短的整数。但在要领上又是一种独立的类型,有自己独立的操作和不同的输入输出方法。确保不要进行无谓的操作,例如两个字符相乘等; 2.字符输入。输入字符时,空白字符是可能造成困扰的原因。Scanf()对数字类型的输入转换处理自动跳过之前的空白字符,在读取第1个非空白字符时才开始存储数据。但是,无论是否空白字符,getchar()都返回第1个字符,带有“%c”的scanf也是一样。为了跳过之前的空白字符,必须使用带有“%c”限定词(格式中的百分号之前包括一个空格)的scanf()。如果遗漏了这个空格,程序就可能读取空白字符并试图将其翻译成为数据,这通常都会导致出现错误。因此,程序员必须清楚地知道自己想做什么(读取空白字符还是跤过空白字符),然后为任务选择恰当的输入机制。 实验七字符串(二) 一、实验目的 1.熟练掌握字符串的匹配查找。 2.熟练掌握字符串的插入操作。 3.熟练掌握字符串的压缩还原处理。 二、实验内容 1.改错题 以下程序对一个由字母和数字字符组成的字符串从头至尾作如下变换:

相关文档
最新文档