MATLAB课程设计

发布 2022-10-01 01:41:28 阅读 6396

《matlab语言》课程**。

基于matlab在声音信号采集与处理中的应用。

姓名:学号:

专业:班级:

指导老师:汤全武。

学院:物理电气信息学院。

完成日期:2024年12月26日。

基于matlab在声音信号采集与处理中的应用。

姓名呵呵呵 12010243456 2010级1班)

摘要] 大学课程中涉及许多复杂的数值计算与图像处理问题,例如非线性问题,对其手工求解较为复杂,有些信号的图像采集与处理用手工难以画出。而matlab语言正是处理这些问题的很好工具,既能进行数值求解,又能绘制有关曲线,非常方便实用。另外,利用其可减少工作量,节约时间,加深理解,同样可以培养应用能力。

关键词] 语音信号双线性变换法 matlab语言图形绘制滤波器。

一。问题的提出。

matlab的名称源自matrix laboratory,2024年由美国mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。matlab将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、**和设计工作。

matlab软件包括五大通用功能,数值计算功能(nemeric)、符号运算功能(symbolic)、数据可视化功能(graphic)、数字图形文字统一处理功能(notebook)和建模**可视化功能(simulink)。其中,符号运算功能的实现是通过请求maple内核计算并将结果返回到matlab命令窗口。该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。

目前,mathworks公司已推出30多个应用工具箱。matlab**性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和**、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

查阅资料了解可知matlab在信号与系统中的应用主要包括符号运算和数值计算**分析。由于信号与系统课程的许多内容都是基于公式演算,而matlab借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。

matlab在信号与系统中的另一主要应用是数值计算与**分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应**分析、信号的时域分析、信号的频谱分析、系统的s域分析和零极点图绘制等内容。数值计算**分析可以帮助学生更深入地理解理论知识,并为将来使用matlab进行信号处理领域的各种分析和实际应用打下基础。

二。声音信号的采集及分析问题。

1.理论原理。

利用matlab对语音信号进行分析和处理,采集语音信号后,利用matlab软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。语音信号的“ 短时谱”对于非平稳信号, 它是非周期的, 频谱随时间连续变化, 因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。如果利用加窗的方法从语音流中取出其中一个短断, 再进行傅里叶变换, 就可以得到该语音的短时谱。

2. 具体流程。

1). 声音信号的采集及分析。

基于声卡进行数字信号的采集。打开我的电脑程序里面,启动录音机。按下开始录音按钮,对话筒说话,说完后停止录音。

要保存文件时,利用了计算机上的a/d转换器,把模拟的声音信号变成了离散的量化了的数字信号,放音时,它又通过d/a转换器,把保存的数字数据恢复为原来的模拟的声音信号。在 matlab软件平台下可以利用函数w**read对语音信号进行采样,得到了声音数据变量x1,同时把x1的采样频率fs=22050hz和数据位nbits=16bit放进了matalb的工作空间。图figure 1为原始语音信号的时域图形。

从图中可以看出在时域环境下,信号呈现出6不规则的信号峰值。通过freqz函数绘制原始语音信号的频率响应图figure 2 。然后对语音信号进行频谱分析,在matlab中可以利用函数fft对信号行快速傅里叶变换,得到信号的频谱图。

其录制声音信号过程如下:

声音我的电脑自带麦克风->声卡->滤波->采样->进行a/d转换->得到w**e格式文件(其中从声卡到a/d转换是windows自带的录音机)。

2). 给原信号加上一个高频噪声。

在matlab中人为设计一个固定频率5500hz的噪声干扰信号。噪声信号通常为随机序列,在本设计中用正弦序列代替,干扰信号构建命令函数为d=[au*sin(2*pi*5500*t)]'给出的干扰信号为一个正弦信号,针对上面的语音信号 ,采集了其中一段。再对噪音信号进行频谱变换得到其频谱图,从图中可以看出干扰信号,在4000hz和 6000hz频点处有一高峰 ,其中 5500hz 正是本设计所要利用的。

3). 设计一个滤波器,滤除高频噪声。

由模拟滤波器变换为数字滤波器时,采用的是双线性变换法, 它保留的是从模拟到数字域的系统函数表示。在滤波器的选取时, 由于设计方法的侧重点不同, 作出比较是困难的。如果fir滤波器情况下,最优的设计将是椭圆滤波器。

用双线性变换法设计低通滤波器。的本设计是用双线性变换法设计bw带阻型滤波器。在 matlab中 ,可以利用函数 butterworth,设计fir滤波器,利用 matlab 中的函数freqz 画出各滤波器的频率响应。

用设计好的带阻滤波器对含噪语音信号进行滤波,在matlab中 fir滤波器利用函数fftfilt对信号进行滤波,fir滤波器利用函数filter对信号进行滤波。在一个窗口同时画出滤波前后的波形及频谱。从图中可以看出 ,5500hz看到的高峰消失了 ,语音信号与开始的一样 ,滤波器成功的滤除了干扰信号。

利用matlab对语音信号进行分析和处理,采集语音信号后,利用matlab软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。

3. 处理步骤。

1).用matlab对原始语音信号进行分析,画出它的时域波形和频谱。

程序:1>声音信号的频率采样。

cleary,f,b]=w**read(' c:\users\administrator\desktop\ rec_ '

l=length(y采样点数。

t=l/f采样时间。

现在y:l*2双声道,f=44.1e3,b=16

需要20e3hz的采样频率,得到新数据y2

f2=20e3;

l2=t*f2;

b=l/l2;

for i=1:l2

y2(i,:)y(round(i*b),:重新采样。

endsubplot(211)

plot(y);

subplot(212)

plot(y2);

w**write(y2,20e3,''

2>时域波形和频谱:

fs=22050声音信号采样频率为22050

x1=w**read(‘c:\users\administrator\desktop\ rec_')

%读取声音信号的数据,赋给变量x1,sound(x1,22050**声音信号。

y1=fft(x1,1024对信号做1024点fft变换。

f=fs*(0:511)/1024将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给f

figure(1创建图形窗1

plot(x1做原始声音信号的时域图形。

title('原始声音信号');

xlabel('time nx轴的名字是“time n”

ylabel('fuzhi ny轴的名字是“fuzhi n”

figure(2)

freqz(x1绘制原始声音信号的频率响应图。

title('频率响应图')

figure(3)

subplot(2,1,1创建两行一列绘图区间的第1个绘图区间

plot(abs(y1(1:512做原始声音信号的fft频谱图。

title('原始声音信号fft频谱')

subplot(2,1,2);

plot(f,abs(y1(1:512abs是绝对值,plot是直角坐标下线性刻度曲线。

title('原始声音信号频谱')

xlabel('hz');

ylabel('幅值');

图1 原始声音信号。

图2 声音信号频率响应图。

图3 原始声音信号fft与信号频谱。

2). 给原始的声音信号加上一个高频余弦噪声,频率为5500hz。对加噪后的语音进行分析,并画出其信号时域和频谱图。

程序:fs=22050;

x1=w**read('c:\users\administrator\desktop\ rec_ '

读取声音信号的数据,赋给变量x1

f=fs*(0:511)/1024将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给f

t=0:1/fs:(length(x1)-1)/fs; %将0到x1的长度减1后的值除以fs的值,且步长为1/fs的值,的序列的值,赋予t

au=0.03噪声幅值。

d=[au*sin(2*pi*5500*t所加的噪声是正弦信号。

x2=x1+d将正弦信号噪声加在声音信号上。

sound(x2,22050**声音信号。

y1=fft(x1,1024对信号y1做1024点fft变换。

MATLAB课程设计

1 求被控对象传递函数g s 的matlab描述。num 789 6312 11835 den 1 14 56 64 0 0 gs tf num,den transfer function 789 s 2 6312 s 11835 s 5 14 s 4 56 s 3 64 s 2 2 求被控对象脉冲...

MATLAB课程设计

课程设计。题目 matlab计算器。姓名 班级 学院 专业 完成时间。1总体设计。该计算器程序主要是matlab来制作,界面主要由四个静态文本框 21个运算按钮和两个动态文本框组成。实现的运算功能有四则运算 加 减 乘 除。而且添加了括号使人们使用时更加简单。这些计算功能主要调用了matlab的自定...

MATLAB课程设计

matlab课程设计。如图所示,为测量系统的示意图,它由两个能相互转动的连杆,角度编码器和滚轮等组成。o1为固定点,o2点为转动点,o3点为滚轮的中心,连杆的有效长度分别为l1和l2。任一位置时,连杆1相对于某基准位置的角度为 1,两连杆的相对角度为 2。其中对于 1,取垂直方向为基准线,在基准线左...