应用matlab对语音信号进行频谱分析及滤波.

合集下载

应用Matlab对信号进行频谱分析及滤波程序

应用Matlab对信号进行频谱分析及滤波程序

完整的程序%写上标题%设计低通滤波器:[N,Wc]=buttord()%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth低通滤波器[h,f]=freqz(); %求数字低通滤波器的频率响应figure(2); % 打开窗口2subplot(221); %图形显示分割窗口plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图title(巴氏低通滤波器'');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形xlabel('时间 (seconds)');ylabel('时间按幅度');SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换w= %新信号角频率subplot(223);plot()); %绘制叠加函数S经过低通滤波器以后的频谱图title('低通滤波后的频谱图');%设计高通滤波器[N,Wc]=buttord()%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器[h,f]=freqz(); %求数字高通滤波器的频率响应figure(3);subplot(221);plot()); %绘制Butterworth高通滤波器的幅频响应图title('巴氏高通滤波器');grid; %绘制带网格的图像sf=filter(); %叠加函数S经过高通滤波器以后的新函数subplot(222);plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');w; %新信号角频率subplot(223);plot()); %绘制叠加函数S经过高通滤波器以后的频谱图title('高通滤波后的频谱图');%设计带通滤波器[N,Wc]=buttord([)%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth带通滤波器[h,f]=freqz(); %求数字带通滤波器的频率响应figure(4);subplot(221);plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图title('butter bandpass filter');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换w=( %新信号角频率subplot(223);plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图title('带通滤波后的频谱图');。

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波应用Matlab对含噪声的语音信号进行频谱分析及滤波一、实验内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。

二、实现步骤1.语音信号的采集利用Windows下的录音机,录制一段自己的话音,时间在1 s内。

然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,(可用默认的采样频率或者自己设定采样频率)。

2.语音信号的频谱分析要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。

在采集得到的语音信号中加入正弦噪声信号,然后对加入噪声信号后的语音号进行快速傅里叶变换,得到信号的频谱特性。

并利用sound试听前后语音信号的不同。

分别设计IIR和FIR滤波器,对加入噪声信号的语音信号进行去噪,画出并分析去噪后的语音信号的频谱,并进行前后试听对比。

3.数字滤波器设计给出数字低通滤波器性能指标:如,通带截止频率fp=10000 Hz,阻带截止频率fs=12000 Hz(可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50 dB,通带最大衰减Rp =3 dB(也可自己设置),采样频率根据自己语音信号采样频率设定。

报告内容一、实验原理含噪声语音信号通过低通滤波器,高频的噪声信号会被过滤掉,得到清晰的无噪声语音信号。

二、实验内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。

matlab对语音信号的频谱分析及滤波资料

matlab对语音信号的频谱分析及滤波资料

一.综合实验题目应用MatLab对语音信号进行频谱分析及滤波二.主要内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;课程设计应完成的工作:1、语音信号的采集;2、语音信号的频谱分析;3、数字滤波器的设计;4、对语音信号进行滤波处理;5、对滤波前后的语音信号频谱进行对比分析;三.具体要求1、学生能够根据设计内容积极主动查找相关资料;2、滤波器的性能指标可以根据实际情况作调整;3、对设计结果进行独立思考和分析;4、设计完成后,要提交相关的文档;1)课程设计报告书(纸质和电子版各一份,具体格式参照学校课程设计管理规定),报告内容要涵盖设计题目、设计任务、详细的设计过程、原理说明、频谱图的分析、调试总结、心得体会、参考文献(在报告中参考文献要做标注,不少于5篇)。

2)可运行的源程序代码(电子版)四.进度安排在基本要求的基础上,学生可根据个人对该课程设计的理解,添加一些新的内容。

五.成绩评定(1)平时成绩:无故旷课一次,平时成绩减半;无故旷课两次平时成绩为0分,无故旷课三次总成绩为0分。

迟到15分钟按旷课处理(2)设计成绩:按照实际的设计过程及最终的实现结果给出相应的成绩。

(3)设计报告成绩:按照提交报告的质量给出相应的成绩。

课程设计成绩=平时成绩(30%)+设计成绩(30%)+设计报告成绩(40%)目录第一节实验任务 (3)第二节实验原理 (3)2.1 采样频率、位数及采样定理 (3)2.2 时域信号的FFT分析 (4)2.3 IIR数字滤波器设计原理 (4)2.4 FIR数字滤波器设计原理 (4)第三节实验过程 (5)3.1原始语音信号采样后的时域、频域分析 (5)3.2采样后信号的FFT变换分析 (7)3.3双线性变换法设计IIR数字滤波器 (8)3.4窗函数法设计FIR数字滤波器 (11)第四节心得体会 (14)第五节参考文献 (15)应用MatLab对语音信号进行频谱分析及滤波第一节实验任务录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波频谱分析是对信号的频率特性进行研究和描述的一种方法,而滤波是对信号进行去除或者强调特定频率成份的处理。

在语音信号处理中,频谱分析及滤波常用于去除噪声、增强语音信号的清晰度和可听度。

Matlab作为一种强大的科学计算软件,提供了丰富的工具和函数用于频谱分析和滤波。

下面将详细介绍如何使用Matlab对含噪声语音信号进行频谱分析及滤波的步骤和方法。

1. 导入语音信号首先,我们需要将含噪声的语音信号导入到Matlab中进行处理。

可以使用Matlab提供的`audioread()`函数读取语音文件,并将其存储为一个向量。

```matlab[y, Fs] = audioread('noisy_speech.wav');```其中,`y`是读取到的语音信号向量,`Fs`是采样率。

如果语音文件的采样率不是默认的16kHz,可以使用`resample()`函数调整采样率。

2. 绘制时域波形为了对语音信号有一个直观的了解,可以绘制其时域波形图。

使用Matlab的`plot()`函数可以实现这一目标。

```matlabt = (0:length(y)-1)/Fs;plot(t, y);xlabel('Time (s)');ylabel('Amplitude');title('Time Domain Waveform');```这段代码将绘制出含噪声语音信号的时域波形图,横轴表示时间,纵轴表示信号的幅值。

3. 进行频谱分析频谱分析可以匡助我们了解语音信号在不同频率上的能量分布情况。

在Matlab 中,可以使用`fft()`函数对语音信号进行傅里叶变换,得到其频谱。

```matlabN = length(y);Y = fft(y);P = abs(Y).^2/N;f = Fs*(0:(N/2))/N;plot(f, 10*log10(P(1:N/2+1)));xlabel('Frequency (Hz)');ylabel('Power (dB)');title('Power Spectrum');```上述代码将绘制出含噪声语音信号的功率谱图,横轴表示频率,纵轴表示功率(以分贝为单位)。

利用MATLAB软件对音频信号进行频谱分析与处理

利用MATLAB软件对音频信号进行频谱分析与处理

利用MATLAB软件对音频信号进行频谱分析与处理一、简介频谱分析是通过对信号的频率成分进行分析,它允许我们了解信号的特性,计算信号的能量分布,同时还可以用来定位造成干扰的频率组件,以及检测和分析信号的变化。

MATLAB是一种编程语言和科学计算软件,它可以非常便捷地实现对音频信号的频谱分析和处理。

二、实现方法1.导入音频信号在使用MATLAB进行频谱分析时,首先需要先将音频信号导入MATLAB环境中。

可以使用audioplayer和audioread函数来完成这一步骤,示例代码如下:[audioData, fs] = audioread(‘AudioFile.wav’);player = audioplayer(audioData, fs);play(player);其中audioData表示从wav文件中读取的音频数据,fs表示采样率,player表示存储audioData和fs的audioplayer实例,play函数可以播放音频文件。

2.信号预处理针对所记录的音频信号,需要进行一些基本的信号处理操作,包括去噪、均衡、时域平均等。

去噪可以用MATLAB内置的函数完成,例如:audioData_NoiseRemoved = denoise(audioData,‘meanspectrum’);均衡是指将频谱的一些区域调整到更好的水平,可以用equalizer函数实现:audioData_Equalized = equalizer(audioData, ‘bandwidth’, 0.2);时域平均则可以使用conv函数实现:audioData_Meaned = conv(audioData, [1/N 1/N ... 1/N]);3.频谱分析频谱分析的主要工作是计算信号的谱密度,也就是每一个频率分量的能量。

利用MATLAB软件对音频信号进行频谱分析与处理

利用MATLAB软件对音频信号进行频谱分析与处理

本科毕业设计说明书(论文)第I 页共I 页毕业设计说明书(论文)外文摘要本科毕业设计说明书(论文)第II 页共I 页目次1 引言 (1)1.1 研究背景 (1)1.2 本文主要研究内容 (1)2 MATLAB简介 (3)2.1 什么是MATLAB (3)2.2 MATLAB的发展历史 (3)2.3 MATLAB系统 (4)2.4 MATLAB的主要功能和特性 (6)3. 数字滤波器简介 (8)3.1 数字滤波器的定义及分类 (8)3.2 数字滤波器设计方法 (10)4.音频信号频谱分析的软件实现 (13)4.1 数字滤波器设计 (13)4.2 音频信号频谱分析 (17)4.3 界面设计 (37)结论 (43)致谢 (44)参考文献 (45)本科毕业设计说明书(论文)第1 页共45 页1 引言1.1 研究背景在计算机技术日新月异的今天,计算机已同人们的日常生活和工作越来越紧密的联系在一起。

而在工程计算领域中,计算机技术的应用正逐步把科技人员从繁重的计算工作中解放出来。

在科学研究和工程应用的过程中,往往需要进行大量的数学计算,传统的纸笔和计算器已根本不能满足海量计算的要求。

MATLAB的产生是与数学计算紧密联系在一起的, MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵,它具有非常强大的计算功能,正是凭借其杰出的性能,MATLAB现在已成为世界上应用最广泛的工程计算应用软件之一。

MATLAB在国外的高校已成为大学生、硕士生、博士生必须掌握的基本程序设计语言。

信号处理是科学研究和工程技术许多领域都需要进行的一个重要环节,这种处理包括信号的检测、变换、滤波、传输、信号提取等。

传统上对信号的处理大都采用模拟系统来实现,然而,随着人们对信号处理要求的不断提高,以及模拟信号处理中一些不可克服的缺点,对信号的许多处理转而采用数字的方法来进行。

信号处理技术是开发具有自主知识产权的各类先进产品的瓶颈,是一项关键技术。

应用Matlab对语音信号进行频谱分析及滤波

应用Matlab对语音信号进行频谱分析及滤波

数字信号处理课程设计报告书应用Matlab对语音信号进行频谱分析及滤波题目:应用Matlab 对语音信号进行频谱分析及滤波一、课程设计内容录制一段个人自己的语音信号,画出此语音信号的时域波形和频谱图;给定滤波器的性能指标,设计IIR 和FIR 滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。

二、课程设计目的1、进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;2、增强应用Mat lab 语言编写数字信号处理的应用程序及分析、解决实际问题的能力。

三、设计内容及步骤1、语音信号的采集利用matlab 的内置函数,设计一个录音器,录制一段自己的话音,时间在1s 内。

然后在Matlab 软件平台下,利用函数w avread 提取录制的语音信号,记住采样频率和采样点数。

说明:由于录音程序录制后用w avwrite 和w avrec ord 时一直出现错误,无法运行,在这里用[filen ame,filepath]=uig etfile('.w av','Open w av file'); [y,fs,nbits]=w avread([filepath,filen ame]);格式打开本地一个已录制好的w av 文件进行分析。

2 、语音信号的频谱分析首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。

3、设计数字滤波器和画出其频率响应用窗函数法和双线性变换法设计下面要求的3种滤波器。

(1)低通滤波器性能指标通带截止频率c f =1000Hz ,阻带截止频率st f =1200 Hz ,通带最大衰减1δ=1dB ,阻带最小衰减2δ=100d B 。

(2)高通滤波器性能指标通带截止频率c f =5000Hz ,阻带截止频率st f =3000 通带衰减1δ≤1dB ,阻带衰减2δ≥100d B 。

基于MATLAB的语音信号分析及滤波

基于MATLAB的语音信号分析及滤波

基于MATLAB的语音信号分析及滤波MATLAB是一种强大的数值计算和数据分析工具,也可以用于语音信号的分析和滤波。

本文将介绍基于MATLAB的语音信号分析和滤波方法。

首先,我们需要将语音信号导入MATLAB中进行分析。

语音信号可以以.wav格式的文件保存,可以使用`audioread`函数将.wav文件导入MATLAB中。

例如:```matlab[x, fs] = audioread('speech.wav');```其中,`x`是导入的语音信号,`fs`是采样率。

接下来,我们可以通过绘制波形图和频谱图来对语音信号进行分析。

波形图可以用`plot`函数绘制,频谱图可以用`spectrogram`函数绘制。

```matlabsubplot(2, 1, 1);plot(x);title('Waveform');xlabel('Sample');ylabel('Amplitude');subplot(2, 1, 2);spectrogram(x, hann(256), 128, 512, fs, 'yaxis');title('Spectrogram');```绘制的波形图显示了语音信号的振幅随时间的变化,而频谱图显示了语音信号在不同频率上的能量分布。

在分析完语音信号的基本特征后,我们可以应用滤波器对语音信号进行滤波。

常用的语音信号滤波器包括低通滤波器、高通滤波器和带通滤波器。

可以使用MATLAB中的`filter`函数来应用这些滤波器。

例如,下面的代码展示了如何使用低通滤波器对语音信号进行滤波:```matlabfc = 4000; % 截止频率为4000 Hz[b, a] = butter(6, fc/(fs/2), 'low'); % 6阶Butterworth低通滤波器filtered_x = filter(b, a, x);figure;subplot(2, 1, 1);plot(x);title('Original Signal');xlabel('Sample');ylabel('Amplitude');subplot(2, 1, 2);plot(filtered_x);title('Filtered Signal');xlabel('Sample');ylabel('Amplitude');```通过调整截止频率和滤波器阶数,可以实现不同的滤波效果。

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波频谱分析和滤波是信号处理中常用的技术,可以帮助我们了解信号的频率特性并对信号进行去噪或增强。

MATLAB是一个强大的数学计算和工程仿真软件,提供了各种工具和函数用于频谱分析和滤波。

频谱分析是通过将信号在频域上进行分解来研究信号的频率特性。

MATLAB提供了几种进行频谱分析的函数,包括FFT(快速傅里叶变换)、periodogram和spectrogram等。

下面将以FFT为例,介绍如何使用MATLAB进行频谱分析。

首先,我们需要先生成一个信号用于频谱分析。

可以使用MATLAB提供的随机信号生成函数来生成一个特定频率和幅度的信号。

例如,可以使用以下代码生成一个包含两个频率成分的信号:```MATLABFs=1000;%采样率t=0:1/Fs:1;%时间向量,从0秒到1秒,采样率为Fsf1=10;%第一个频率成分f2=50;%第二个频率成分A1=1;%第一个频率成分的幅度A2=0.5;%第二个频率成分的幅度x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t);```上述代码生成了一个采样率为1000Hz的信号,包含10Hz和50Hz两个频率的成分。

接下来,我们可以使用MATLAB的FFT函数对信号进行频谱分析,并将频谱绘制出来。

FFT函数将信号从时域转换到频域,并返回频谱幅度和频率信息。

以下是使用FFT函数对上述生成的信号进行频谱分析的代码:```MATLABN = length(x); % 信号长度X = abs(fft(x))/N; % 计算FFTf=(0:N-1)*(Fs/N);%计算频率坐标plot(f,X)xlabel('频率(Hz)')ylabel('幅度')title('信号频谱')```上述代码中,我们首先计算FFT并将结果除以信号长度,以得到正确的幅度值。

然后,我们计算频率坐标,并将频谱幅度与频率绘制出来。

MATLAB的语音信号频谱分析报告

MATLAB的语音信号频谱分析报告

. . . .幅值时间(s )信号波形信号频谱数字角频率幅度123-1-0.500.51幅度时间(s )2:1减抽样信号波形00.51 1.521000200030002:1减抽样信号频谱数字角频率w幅度0.51 1.5幅度时间(s )5:1减抽样信号波形00.51 1.525:1减抽样信号频谱数字角频率w幅度实验一[y,fs,bit]=wavread<'I do'>%读取音乐片段,fs 是采样率 size<y>%求矩阵的行数和列数y1=y<:,1>;%对信号进行分列处理n1=length<y1>;%取y 的长度t1=<0:n1-1>/fs;%设置波形图横坐标 figuresubplot<2,1,1>;plot<t1,y1>; %画出时域波形图 ylabel<'幅值'>; xlabel<'时间〔s'>; title<'信号波形'>;subplot<2,1,2>;Y1=fft<y1>;w1=2/n1*<0:n1-1>;%设置角频率 plot<w1,abs<Y1>>;%画频谱图 title<'信号频谱'>; xlabel<'数字角频率'>; ylabel<'幅度'>; grid on ;sound<y,fs>;实验二[y,fs,bit]=wavread<'I do'> y1=y<:,1>; n1=length<y1>; D=2;%设置抽样间隔 y2=y1<1:D:n1>;%减抽样n2=length<y2>;%减抽样后信号长度 t2=<0:n2-1>/fs;%设置横坐标 figuresubplot<2,2,1>;plot<t2,y2>; %绘制减抽样信号波形图 ylabel<'幅度'>; xlabel<'时间〔s'>;title<'2:1减抽样信号波形'>;Y2=fft<y2>; %对y2进行n2点fft 谱分析 w2=2/n2*[0:n2-1]; subplot<2,2,3>;plot<w2,abs<Y2>>;%绘制减抽样信号频谱图 title<'2:1减抽样信号频谱'>; xlabel<'数字角频率w'>; ylabel<'幅度'>;246-1-0.500.51时间(s)幅度调制后信号246时间(s)幅度调制后信号100020003000数字角频率w幅度调制后信号的频谱(高频率调制)数字角频率w幅度调制后信号的频谱(低频率调制)grid on ;sound<y2,fs/D>; D=5;%设置抽样间隔 y3=y1<1:D:n1>;%减抽样n3=length<y3>;%减抽样后信号长度 t3=<0:n3-1>/fs;%设置横坐标 subplot<2,2,2>;plot<t3,y3>; %绘制减抽样信号波形图 ylabel<'幅度'>; xlabel<'时间〔s'>;title<'5:1减抽样信号波形'>;Y3=fft<y3>; %对y2进行n2点fft 谱分析 w3=2/n3*[0:n3-1]; subplot<2,2,4>;plot<w3,abs<Y3>>;%绘制减抽样信号频谱图 title<'5:1减抽样信号频谱'>; xlabel<'数字角频率w'>; ylabel<'幅度'>; grid on ;sound<y3,fs/D>实验三[y,fs,bit]=wavread<'I do'> y1=y<:,1>; n1=length<y1>; n3=0:n1-1;b1=cos<0.75*pi*n3>;%设置调制信号 b2=cos<0.5*pi*n3>;c1=b1'.*y1;%对原信号进行调制 c2=b2'.*y1; lc1=length<c1>; t=<0:lc1-1>/fs;figure %用载波对信号进行调制,并对其做fft 变换 subplot<2,2,1> %获取频谱,从图中可以观察到,调制后的 plot<t,c1>; %信号频谱发生搬移 xlabel<'时间<s>'>; ylabel<'幅度'>;title<'调制后信号'>;subplot<2,2,2> %获取频谱,从图中可以观察到,调制后的 plot<t,c2>; %信号频谱发生搬移 xlabel<'时间<s>'>; ylabel<'幅度'>;title<'调制后信号'>;w1=2/lc1*[0:lc1-1];%设置角频率W-1-0.50.51音频时间幅度0120200040006000频谱频率/pi 幅度AM 调制音频信号时间幅度12AM 调制频谱频率/pi幅度x 105-1-0.500.51时间幅度AM 解调音频信号012100020003000AM 解调频谱频率/pi幅度C1=fft<c1>; C2=fft<c2>; subplot<2,2,3> plot<w1,abs<C1>>;xlabel<'数字角频率w'>; ylabel<'幅度'>;title<'调制后信号的频谱<高频率调制>'>; grid on ;subplot<2,2,4> plot<w1,abs<C2>>;xlabel<'数字角频率w'>; ylabel<'幅度'>;title<'调制后信号的频谱<低频率调制>'>; grid on ;sound<c1,fs>;实验四clear all ;cla;close all [a,fs,bit]=wavread<'I do'>; y1=a<:,1>;%去单列数据进行分析 f1=fft<y1>; n=length<f1>; tn=<0:n-1>/fs; w=2/n*[0:n-1]; %sound<y1,fs>; figure<1>subplot<2,3,1>;plot<tn,y1>;grid on ;title<'音频'>;xlabel<'时间'>; ylabel<'幅度'>; subplot<2,3,4>;plot<w,abs<f1>>; grid on ; title<'频谱'>; xlabel<'频率/pi'>;ylabel<'幅度'>; t=[0:n-1]; y2=cos<pi*1/2*t>;%载波函数 y3=y1.*y2';%信号调制 ty3=<0:length<y3>-1>/fs; subplot<2,3,2>;plot<ty3,y3>;%绘制调制后信号波形图 grid on ;title<'AM 调制音频信号'>; xlabel<'时间'>;H 低通滤波器波形ylabel<'幅度'>;f3=fft<y3>;n2=length<f3>;w2=2/n2*[0:n2-1];subplot<2,3,5>;plot<w2,abs<f3>>;%绘制调制后信号频谱图grid on;title<'AM调制频谱'>;xlabel<'频率/pi'>;ylabel<'幅度'>;%解调后信号n3=length<y3>t2=0:n3-1;y4=cos<pi*1/2*t2>y5=y3.*y4';%解调后的信号函数subplot<2,3,3>;plot<t2,y5>;grid on;xlabel<'时间'>;ylabel<'幅度'>;title<'AM解调音频信号'>;f5=fft<y5>;w3=2/n3*[0:n3-1];subplot<2,3,6>;plot<w3,abs<f5>>;%绘制解调后信号频谱图grid on;title<'AM解调频谱'>;xlabel<'频率/pi'>;ylabel<'幅度'>;%设计巴特沃斯滤波器进行滤波去噪[N1,wc1]=buttord<0.05,0.17,1,15>;%确定低通滤波器的阶数和截止频率;[b,a]=butter<N1,wc1>;%确定低通滤波器分子分母系数[H,W]=freqz<b,a>;figure<2>plot<W,abs<H>>;%低通滤波器波形xlabel<'w'>;ylabel<'H'>;title<'低通滤波器波形'>;m=filter<b,a,y5>;wavplay<m,fs>;lm=length<m>;%滤波后信号长度tm=<0:lm-1>/fs;%设置横坐标wm=2/lm*[0:lm-1];M=fft<m>;figure<3>subplot<2,1,1>;plot<tm,m>;grid on;矩形窗滤波后音频0100020003000矩形窗滤波后频谱布莱克曼窗滤波后音频布莱克曼窗滤波后频谱x 10-4-0.100.10.20.3矩形窗时域矩形窗频域-0.100.10.20.3布莱克曼窗时域布莱克曼窗频域0123456t 幅度00.20.40.60.81 1.2 1.4 1.6 1.82100020003000滤波后波形频谱图w/pi 幅度title<'滤波后波形'>; xlabel<'t'>; ylabel<'幅度'>;subplot<2,1,2>;plot<wm,abs<M>>;title<'滤波后波形频谱图'>;xlabel<'w/pi'>; ylabel<'幅度'>;%矩形窗和布莱克曼窗 N=33;wc=0.3*pi;%基于经验的指标,其中N hd=ideal<N,wc>;%调用理想低通滤波器函数 w1=boxcar<N>;%产生各种窗函数 w2=blackman<N>;h1=hd.*w1';%加窗设计各种FIR 滤波器h2=hd.*w2'; th1=<0:32>/fs; th2=<0:32>/fs; M=21184; fh1=fft<h1,M>;%矩形窗频谱函数 w=2/M*[0:M-1]; fh2=fft<h2,M>;%布莱克曼窗频谱函数 figure<4>subplot<2,2,1>;plot<th1,h1> title<'矩形窗时域'>;subplot<2,2,2>;plot<w,abs<fh1>>; title<'矩形窗频域'>; subplot<2,2,3>;plot<th2,h2>; title<'布莱克曼窗时域'>;subplot<2,2,4>;plot<w,abs<fh2>>; title<'布莱克曼窗频域'> %解调后信号n3=length<y3>t2=0:n3-1; y4=cos<pi*1/2*t2>y5=y3.*y4';%调制后的信号函数figure %滤波处理y6=conv<h1,y5>;%用矩形窗对调制后信号进行滤波f6=fft<y6>;n4=length<f6>; ty6=<0:n4-1>/fs; w3=2/n4*[0:n4-1];%sound<y6,fs>;figure<5> subplot<2,2,1>;plot<ty6,y6>;100200时间(s )幅值三余弦信号音谱012W噪声频谱12200040006000W加噪信号频谱0510-2-1012时间(s )幅值加噪信号音谱0510-1-0.500.51t(s)信号幅值去噪后信号波形012200040006000w/pi幅度kIIR 滤波器滤波后信号频谱title<'矩形窗滤波后音频'>subplot<2,2,2>;plot<w3,abs<f6>>; title<'矩形窗滤波后频谱'>y7=conv<h2,y5>;%用布莱克曼窗进行滤波 f7=fft<y7>; n5=length<f7>; ty7=<0:n5-1>/fs; w4=2/n5*[0:n5-1]; %sound<y7,fs>;subplot<2,2,3>;plot<ty7,y7>; title<'布莱克曼窗滤波后音频'> subplot<2,2,4>;plot<w4,abs<f7>>; title<'布莱克曼窗滤波后频谱'>实验五clc;clear;close;[y,fs,bit]=wavread<'I do'>; y0=y<:,1>; l=length<y0>; %加三余弦混合噪声 t0=<0:l-1>/fs;d0=[0.05*cos<2*pi*3000*t0>]'; t1=<0:l-1>/fs;d1=[0.05*cos<2*pi*5000*t1>]'; t2=<0:l-1>/fs;d2=[0.05*cos<2*pi*8000*t2>]'; noise=d2+d1+d0; y1=y0+noise; %sound<y1,fs>;a=length<noise>;%绘制三余弦噪声音频图 wa=2/a*[0:a-1]; Noise=fft<noise>; figure<1>subplot<2,3,4>;plot<noise<1:150>>; xlabel<'时间〔s'> ylabel<'幅值'>title<'三余弦信号音谱'>subplot<2,3,1>;%绘制三余弦噪声频谱图 plot<wa,abs<Noise>>; grid on ; xlabel<'W'>title<'噪声频谱'>w0=2/l*[0:l-1];%绘制加噪信号音频Y1=fft<y1>;subplot<2,3,5>plot<w0,abs<Y1>>;grid on;xlabel<'W'>title<'加噪信号频谱'>ly1=length<y1>;ty1=<0:ly1-1>/fs;subplot<2,3,2>;plot<ty1,y1>;xlabel<'时间〔s'>ylabel<'幅值'>title<'加噪信号音谱'>m=rand<l,1>-0.5; %产生幅度为0.5的随机信号lm=length<m>;y2=m+y0;%将噪声信号与原声音信号叠加wm=2/lm*[0:lm-1];M=fft<m>;figure<2>subplot<2,2,3>;plot<m<1:150>>xlabel<'时间〔s'>ylabel<'幅值'>title<'白噪信号音谱'>subplot<2,2,1>;plot<wm,abs<M>>;grid on;xlabel<'W'>title<'噪声频谱'>l=length<y2>;ty2=<0:l-1>/fs;w=2/l*[0:l-1];Y2=fft<y2>;subplot<2,2,4>plot<w,abs<Y2>>;grid on;xlabel<'W'>title<'加噪信号频谱'>subplot<2,2,2>;plot<ty2,y2>;xlabel<'时间〔s'>ylabel<'加噪信号幅值'>title<'加噪信号音谱'>;%设计滤波器进行滤波去噪[N1,wc1]=buttord<0.04,0.17,1,30>;%确定低通滤波器的阶数和截止频率;[b,a]=butter<N1,wc1>; %确定低通滤波器分子分母系数2400.511.5wH 低通滤波器波形0510n信号幅值低通滤波后波形012200040006000数字角频率w 幅度低通滤波后频谱02400.511.5w1H 1高通滤波器波形0510n信号幅值m高通滤波后波形0120200400600数字角频率w幅度kIIR 高通滤波后频谱0123456音乐信号的波形ty 1音乐信号的频谱wf 1m=filter<b,a,y1>;%用滤波器滤除三余弦噪声 sound<m,fs>;lm=length<m>;%滤波后信号长度tm=<0:lm-1>/fs;%设置横坐标figure<1>;subplot<2,3,3>;plot<tm,m>;%绘制滤波后的波形 xlabel<'t<s>'>ylabel<'信号幅值'>title<'去噪后信号波形'>;k=fft<m>; %滤波后的波形做离散傅里叶变换 w=2*[0:length<k>-1]/length<k>; subplot<2,3,6>plot<w,abs<k>>; xlabel<'w/pi'>ylabel<'幅度k'>title<'IIR 滤波器滤波后信号频谱'>;实验六.一clear all ;clc [y,fs,bit]=wavread<'I do'>; size<y>%查看读取信号的声道类型 y1=y<: ,1>;%对信号进行分列处理 n=length<y1>;%求信号y1的的长度t1=<0:n-1>/fs;f1=fft<y1>;%对y1进行fft 谱分析 w=2/n*[0:n-1];%w 为连续频谱的数字角频率横坐标%sound<y,fs>;%播放音乐信号figure<1>subplot<2,1,1>;plot<t1,y1>; title<'音乐信号的波形'>;xlabel<'t'>; ylabel<'y1'>; subplot<2,1,2>;plot<w,abs<f1>>; title<'音乐信号的频谱'>; xlabel<'w'>; ylabel<'f1'>; %用IIR 滤波器滤波〔低[n2,wc2]=buttord<0.15,0.20,1,15>;%确定低通滤波器的阶数和截止频率; [B2,A2]=butter<n2,wc2>; %确定低通滤波器分子分母系数 [H,W]=freqz<B2,A2>; figure<2>subplot<2,3,1>;plot<W,abs<H>>;%低通滤波器波形-0.50.5音乐信号1的波形ty 100.20.40.60.81 1.21.4 1.6 1.82200040006000%音乐信号1的频谱wf 1xlabel<'w'> ylabel<'H'>title<'低通滤波器波形'>; m2=filter<B2,A2,y1>;%滤波 lm2=length<m2>; tm2=<0:lm2-1>/fs; subplot<2,3,2>plot<tm2,m2>;xlabel<'n'>ylabel<'信号幅值'> title<'低通滤波后波形'>;k2=fft<m2>;%滤波后的波形做离散傅里叶变换 l2=length<k2>; w2=2*[0:l2-1]/l2;subplot<2,3,3>; plot<w2,abs<k2>>;xlabel<'数字角频率w'> ylabel<'幅度'> title<'低通滤波后频谱'>; %解调滤波后的频谱 %用IIR 滤波器滤波〔高[N,WC]=buttord<0.15,0.20,1,15>;%确定高通滤波器的阶数和截止频率; [B,A]=butter<N,WC,'high'>; %确定高通滤波器分子分母系数 [H1,W1]=freqz<B,A>; subplot<2,3,4>;plot<W1,abs<H1>>;%高通滤波器波形 xlabel<'w1'> ylabel<'H1'>title<'高通滤波器波形'>; m=filter<B,A,y1>; %滤波 lm=length<m>; tm=<0:lm-1>/fs; subplot<2,3,5>; plot<tm,m>; xlabel<'n'>ylabel<'信号幅值m'>title<'高通滤波后波形'>; k=fft<m>;l2=length<k>; w2=2*[0:l2-1]/l2; subplot<2,3,6>; plot<w2,abs<k>>;xlabel<'数字角频率w'> ylabel<'幅度k'>title<'IIR 高通滤波后频谱'>;0123456-2-1012音乐1的幅度与音乐2的相位交叉组合后的波形t X 1200040006000音乐1的幅度与音乐2的相位交叉组合后的频谱w F1-0.4-0.200.20.4音乐信号2的波形ty 200.20.40.60.81 1.2 1.4 1.6 1.82100020003000音乐信号2的频谱wf 2实验六.二clear all ;clc[a,fs1,bit1]=wavread<'I do'>;[b,fs2,bit2]=wavread<'风声'>; size<b>%查看读取信号的声道类型y2=b<:,1>;%对信号进行分列处理 n2=length<y2>;%求信号y2的的长度t2=<0:n2-1>/fs2; f2=fft<y2>;w2=2/n2*[0:n2-1];%wavplay<y2,fs2>;size<a>%查看读取信号的声道类型y1=a<: ,1>;%对信号进行分列处理n1=length<y1>; t1=<0:n1-1>/fs1;f1=fft<y1>;w1=2/n1*[0:n1-1];%w 为连续频谱的数字角频率横坐标 %wavplay<y1,fs1>;Fy1=abs<f1>;%音乐1的幅度 Ay1=angle<f1>;%音乐1的相位 Fy2=abs<f2>;%音乐2的幅度 Ay2=angle<f2>;%音乐2相位F1=Fy1.*exp<j*Ay2>;%音乐1的幅度与音乐2的相位交叉组合 X1=ifft<F1>; n3=length<X1>;tx1=<0:<n3-1>>/fs1; w3=2/n3*[0:n3-1];%wavplay<real<X1>,fs1>;F2=Fy2.*exp<j*Ay1>;%幅度相位交叉组合 X2=ifft<F2>;n4=length<X2>; tx2=<0:<n4-1>>/fs2;w4=2/n4*[0:n4-1]%wavplay<real<X2>,fs2>;figure<1> subplot<2,1,1>;plot<t1,y1>;%绘制信号1波形title<'音乐信号1的波形'>; xlabel<'t'>;ylabel<'y1'>;subplot<2,1,2>;plot<w1,abs<f1>>;%绘制音乐信号1的频谱title<'%音乐信号1的频谱'>; xlabel<'w'>;.12 / 11 0123456-0.500.5音乐2的幅度与音乐1的相位交叉组合后的波形tX 20100020003000音乐2的幅度与音乐1的相位交叉组合后的频谱w F 2ylabel<'f1'>;figure<2>subplot<2,1,1>;plot<t2,y2>;title<'音乐信号2的波形'>;xlabel<'t'>;ylabel<'y2'>;subplot<2,1,2>;plot<w2,abs<f2>>;title<'音乐信号2的频谱'>;xlabel<'w'>;ylabel<'f2'>;figure<3>subplot<2,1,1>;plot<tx1,X1>;title<'音乐1的幅度与音乐2的相位交叉组合后的波形'>; xlabel<'t'>;ylabel<'X1'>;subplot<2,1,2>;plot<w3,abs<F1>>;title<'音乐1的幅度与音乐2的相位交叉组合后的频谱'>; xlabel<'w'>;ylabel<'F1'>;figure<4>subplot<2,1,1>;plot<tx2,X2>;title<'音乐2的幅度与音乐1的相位交叉组合后的波形'>; xlabel<'t'>;ylabel<'X2'>;subplot<2,1,2>;plot<w4,abs<F2>>;title<'音乐2的幅度与音乐1的相位交叉组合后的频谱'>; xlabel<'w'>;ylabel<'F2'>;。

应用Matlab对含噪声的语音信号进行频谱分析及滤波

应用Matlab对含噪声的语音信号进行频谱分析及滤波

应用Matlab对含噪声的语音信号进行频谱分析及滤波实验目的1.巩固所学的数字信号处理理论知识,理解信号的采集、处理、传输、显示和存储过程;2.综合运用专业及基础知识,解决实际工程技术问题的能力;3.学习资料的收集与整理,学会撰写课程设计报告。

实验环境1.微型电子计算机(PC);2.安装Windows 10操作系统,MATLAB7.0,FormatFactory等开发工具。

实验原理:在MATLAB环境中,有关声音(wave)录制、播放、存储和读取的函数有:●y=wavrecord(N,fs,Dtype)利用系统音频输入设备录音,以fs为采样频率,默认值为11025,即以11025Hz 进行采样。

Dtype为采样数据的存储格式,用字符串指定,可以是:‘double’、‘single’、’int16’、‘int8’其中只有int8是采用8位精度进行采样,其它三种都是16位采样结果转换为指定的MATLAB数据;●wavplay(y,fs)利用系统音频输出设备播放,以fs为播放频率,播放语音信号y;●wavwrite(y,fs,wavfile)创建音频文件;●wavread()读取wav格式的音频文件。

例如:[x,fs,bits]=wavread('myrecordsound.wav')x=x(:,1); %假设声音是双声道,只取单声道作分析上述语句表示读入存放在当前工作目录下的声音文件myrecordsound.wav,并以fs 为采样频率进行采样后存储在数组x中。

其中nbit是采样精度,比如16就是指16位精度的采样。

取单声道后,得到的数值x是一个列向量。

●sound();该函数的输入参量是音频数据向量、采样频率和转换位数。

例如:sound(sin(2*pi*25*(1:4000)/100));响两声就是:sound(sin(2*pi*25*(1:4000)/100));sleep(1);sound(sin(2*pi*25*(1:4000)/100));实验内容和任务要求1.采集语音信号并进行频谱分析2.对加入噪声的语音信号进行频谱分析3. 设计数字滤波器对加入噪声的语音信号进行滤波问题分析本实验要求设计IIR和FIR两种形式的滤波器对带有噪音的信号进行滤波。

用matlab对信号进行频谱分析及滤波

用matlab对信号进行频谱分析及滤波

华东交通大学课程设计(论文)任务书专业 xxx 班级 xx 姓名 xxx一、课程设计(论文)题目应用Matlab对信号进行频谱分析及滤波二、课程设计(论文)工作:自 xxx 年 x 月 x 日起至 xxx 年 x 月 x 日止。

三、课程设计(论文)的内容要求:学生签名:20 年月日课程设计(论文)评阅意见评阅人职称20 年月日目录设计过程步骤(5)2.1 语音信号的采集(5)2.2 语音信号的频谱分析(6)2.3 设计数字滤波器和画出其频谱响应(7)2.4 用滤波器对信号进行滤波(9)2.5滤波器分析后的语音信号的波形及频谱(10)●心得和经验(11) ●参考文献 (12)设计过程步骤2.1 语音信号的采集我们利用Windows下的录音机,录制了一段开枪发出的声音,时间在1 s内。

接着在C盘保存为WAV格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。

通过wavread函数和sound的使用,我们完成了本次课程设计的第一步。

其程序如下:[x,fs,bite]=wavread('c:\alsndmgr.wav',[1000 20000]);sound(x,fs,bite);2.2 语音信号的频谱分析首先我们画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。

到此,我们完成了课程实际的第二部。

其程序如下:n=1024;subplot(2,1,1);y=plot(x(50:n/4));grid on ;title('时域信号')X=fft(x,256); subplot(2,1,2);plot(abs(fft(X))); grid on ;title('频域信号');运行程序得到的图形:2.3 设计数字滤波器和画出其频谱响应紧接着着我们做了一个数字滤波器:采样频率10Hz,通带截止频率fp=3Hz,阻带截止频率fs=4Hz通带衰减小于1dB,阻带衰减大于20dB,我们主要使用双线性变换法由模拟滤波器原型设计数字滤波器。

使用Matlab进行语音信号处理的基本步骤

使用Matlab进行语音信号处理的基本步骤

使用Matlab进行语音信号处理的基本步骤引言:语音信号处理是一门涉及声音的数字信号处理领域。

它涉及到一系列的算法,用于提取、分析、合成和改变人类语音的特征。

在计算机科学和工程学中,Matlab 是最常用的工具之一,它可以有效地用于语音信号处理。

本文将介绍使用Matlab 进行语音信号处理的基本步骤。

一、导入音频文件和预处理在开始语音信号处理之前,需要导入音频文件并进行预处理。

首先,使用Matlab的音频读取函数将音频文件导入到工作环境中。

常用的音频读取函数有audioread()和wavread()等。

导入音频文件后,可以使用滤波器对音频信号进行去除噪声等预处理操作。

Matlab提供了丰富的滤波器函数,如fir1()和filter()等,可以在预处理阶段使用。

二、时域分析在对音频信号进行时域分析时,常用的技术包括时域增益和自相关函数。

时域增益可以帮助我们调整音频信号的音量。

Matlab提供了amp2db()函数,可以将线性增益转换为分贝增益。

自相关函数可以帮助我们识别音频信号中的周期性特点。

利用Matlab的xcorr()函数可以计算音频信号的自相关函数,并通过绘图工具(如plot()函数)来可视化结果。

三、频域分析频域分析是语音信号处理中的关键步骤之一。

在频域分析中,常用的技术包括傅里叶变换和功率谱密度估计。

Matlab提供了fft()函数用于计算音频信号的傅里叶变换,并通过频率域绘图工具(如plot()函数)来可视化结果。

功率谱密度估计是计算音频信号功率谱的一种技术。

Matlab提供了pwelch()函数来估计音频信号的功率谱密度,并通过plot()函数来可视化结果。

四、频率特征提取在语音信号处理中,频率特征提取是非常重要的一步。

常用的频率特征包括基频、共振峰和频率包络等。

基频代表语音信号的基本频率,可以通过自相关函数或基频提取算法来计算。

共振峰表示语音信号的共振峰位置,可通过线性预测分析或峰值检测算法来提取。

基于MATLAB对语音信号进行分析和处理

基于MATLAB对语音信号进行分析和处理

基于MATLAB对语音信号进行分析和处理一、设计目的1.学会MATLAB的使用,掌握MA TLAB的程序设计方法;2.掌握在Windows环境下语音信号采集的方法;3.掌握数字信号处理的基本概念、基本理论和基本方法;4.掌握MATLAB设计FIR和IIR数字滤波器的方法;5.学会用MA TLAB对信号进行分析和处理。

二、设计过程1、语音信号采集与分析运用windows下的录音机,录制一段自己的话音,时间为两秒。

然后在MATLAB 软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形。

人为设计一个固定频率5500Hz的噪声干扰信号。

噪声信号通常为随机序列,在本设计中用正弦序列代替,干扰信号构建命令函数为d=[Au*sin(2*pi*5500*t)]',给出的干扰信号为一个正弦信号,针对上面的语音信号 ,采集了其中一段。

再对噪音信号进行频谱变换得到其频谱图。

2、滤波器设计和运用滤波器进行滤波1 )窗函数和等波纹逼近法设计FIR滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用fir1函数设计线性相位FIR数字滤波器,再用freqz函数画出其频谱图形,最后运用fftfilt函数对信号进行滤波。

而等波纹逼近法中则运用remez和remezord直接设计FIR滤波器,然后运用fftfilt函数对信号进行滤波。

2 )双线性变换法社设计IIR数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标:Ωph=2/T*tan(wp/2),然后用butter、cheby1设计各种模拟滤波器,再用bilinear函数进行模拟滤波器和数字滤波器之间的转换,最后用filter函数对语音信号进行滤波,并运用函数sound播放滤波后语音。

三、结果及分析1、用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱时域波形和频谱:图1 原始语音信号图2 语音信号频率响应图图3 原始语音信号FFT与信号频谱2、给原始的语音信号加上一个高频余弦噪声,频率为5500hz。

如何使用Matlab进行频域分析和滤波处理

如何使用Matlab进行频域分析和滤波处理

如何使用Matlab进行频域分析和滤波处理频域分析和滤波处理在信号处理领域中具有重要的地位。

Matlab是一种专业的数学软件,在频域分析和滤波处理方面提供了丰富的工具和函数。

本文将介绍如何使用Matlab进行频域分析和滤波处理,包括频谱分析、滤波器设计和滤波器应用等方面的内容。

一、频域分析的基本原理频域分析是将时域信号转换为频域表示的过程。

在频域中,信号的特征通过频谱来描述,频谱展示了信号中各个频率分量的强度和相位信息。

常用的频域分析方法有傅里叶变换、快速傅里叶变换(FFT)等。

1. 傅里叶变换傅里叶变换是将一个信号从时域转换到频域的数学工具。

在Matlab中,可以使用fft函数进行傅里叶变换。

例如,对于一个长度为N的时域信号x,在Matlab中可以使用X = fft(x)来计算其频域表示。

得到的频域信号X是一个复数数组,包含了信号在各个频率上的幅度和相位信息。

2. FFT算法快速傅里叶变换(FFT)是一种快速计算傅里叶变换的算法。

相较于传统的傅里叶变换,FFT算法具有计算效率高的优势,在信号处理中得到广泛应用。

在Matlab中,可以使用fft函数进行FFT计算。

例如,对于一个长度为N的时域信号x,在Matlab中可以使用X = fft(x, N)来进行FFT计算。

其中N是指定的变换点数,通常选择2的幂次作为变换点数,以提高计算效率。

二、频谱分析的应用频谱分析可以用来探索信号中各个频率分量的特点和相互关系。

常用的频谱分析方法有功率谱密度估计、谱系分析、半对数谱等。

1. 功率谱密度估计功率谱密度估计是分析信号的功率在不同频率上的分布情况。

在Matlab中,可以使用pwelch函数进行功率谱密度估计。

例如,对于一个长度为N的时域信号x,在Matlab中可以使用[Pxx, f] = pwelch(x)来计算其功率谱密度。

得到的Pxx是功率谱密度估计结果,f是对应的频率向量。

2. 谱系分析谱系分析是研究信号频谱在时间和频率上的变化规律。

用MATLAB实现语音信号降噪滤波

用MATLAB实现语音信号降噪滤波

用MATLAB实现语音信号降噪滤波语音信号降噪是指通过滤波技术减少或消除语音信号中的噪声成分,以提高语音信号的质量和清晰度。

MATLAB作为强大的计算软件平台,提供了丰富的信号处理工具箱和函数库,可以用来实现语音信号降噪滤波。

语音信号降噪滤波的基本步骤包括:预处理、噪声估计、滤波处理和后处理。

下面将详细介绍每个步骤以及如何在MATLAB中实现。

1. 预处理:预处理通常包括读取语音信号、预加重和分帧处理。

MATLAB提供了读取音频信号的函数audioread(,可以将音频文件读取为一个向量。

预加重是为了强调高频部分,减小低频部分的能量,常用的预加重滤波器是一阶高通滤波器。

可以通过设计一个一阶IIR滤波器实现:```matlabfunction y = preemphasis(x, alpha)b = [1 -alpha];a=1;y = filter(b, a, x);end```分帧处理是将长时间的语音信号分成若干个短时段的音频帧,通常每帧长度为20ms-40ms。

可以使用函数buffer(实现分帧处理:```matlabframe_length = 0.02; % 20msframe_shift = 0.01; % 10msframe_samples = frame_length * fs; % fs为采样率frame_shift_samples = frame_shift * fs;frames = buffer(y, frame_samples, frame_shift_samples,'nodelay');```2. 噪声估计:噪声估计是为了获得噪声信号的特征,以便将其从语音信号中减去。

常用的噪声估计方法有简单平均法、中位数法等。

以简单平均法为例,可以使用函数mean(进行噪声估计:```matlabnoise_frames = frames(:, 1:noise_frame_num); % 噪声帧noise_spectrum = abs(fft(noise_frames)); % 噪声帧频谱noise_spectrum_mean = mean(noise_spectrum, 2); % 帧频谱平均```3. 滤波处理:滤波处理是将估计得到的噪声信号从语音信号中减去。

应用Matlab对信号进行频谱分析及滤波(数字信号处理)

应用Matlab对信号进行频谱分析及滤波(数字信号处理)

华东交通大学理工学院课程设计报告书所属课程名称数字信号处理题目应用Matlab对信号进行频谱分析及滤波分院电信分院专业班级电子信息工程*班学号**************学生姓名邓群指导教师****2013 年6月27 日课程设计(论文)评阅意见评阅人** 职称讲师2013 年6月27日一、目录一、目录 (2)二、设计内容及要求 (3)三、设计方法与步骤 (3)3.1 语音信号的采集 (3)3.2 语音信号的频谱分析 (4)3.3 设计数字滤波器和画出其频谱响应 (5)3.4 用滤波器对信号进行滤波 (7)3.5滤波器分析后的语音信号的波形及频谱 (8)四、课程设计心得 (8)五、参考文献 (9)二、设计内容及要求利用Windows下的录音机,录制了一段个人自己的语音。

在C 盘保存为W A V格式,然后在Matlab软件平台下.利用函数wavread 对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。

然后画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。

紧接着着我们做了一个数字滤波器:采样频率10Hz,通带截止频率fp=3Hz,阻带截止频率fs=4Hz 通带衰减小于1dB,阻带衰减大于20dB,我们主要使用双线性变换法由模拟滤波器原型设计数字滤波器。

程序最后我们还利用Matlab 中的函数freqz画出了该滤波器的频率响应。

课设报告要求:1、字体必须是四号字体,宋体字,行间距设为1.25;2、报告书内容要涵盖课程设计题目、详细设计过程、频谱图的分析、心得体会和参考文献。

3、给出可运行的源程序代码。

三、设计方法与步骤3.1 语音信号的采集我们利用Windows下的录音机,录制了一段开枪发出的声音,时间在1 s内。

接着在C盘保存为W A V格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。

利用matlab处理语音信号及滤波

利用matlab处理语音信号及滤波

数字信号处理课程设计摘要:语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。

Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。

这为我们的本次设计提供了强大并良好的环境!本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。

再在Matlab中分别设计不同形式的FIR数字滤波器。

之后对采集的语音信号经过不同的滤波器(低通、高通、带通)后,观察不同的波形,并进行时域和频谱的分析。

对比处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。

最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。

目录1.设计内容 (4)2.设计原理 (4)2.1语音信号的时域分析 (4)2.2语音信号的频域分析 (5)3.设计过程 (5)3.1实验程序源代码 (6)3.1.1原语音信号时域、频域图 (6)3.1.2低通滤波器的设计 (6)3.1.3高通滤波器的设计 (7)3.1.4带通滤波器的设计 (8)3.1.5语音信号的回放 (9)3.2调试结果描述 (10)3.3所遇问题及结果分析 (15)3.3.1所遇主要问题 (16)3.3.2结果分析 (16)4.体会与收获 (17)5.参考文献 (17)1.设计内容:1.首先录制好一段自己的语音。

2.用Matlab分别设计好3种类型的滤波器(指标自己确定):低通型、高通型、带通型。

3.用Matlab将语音信号进行采样,并分别将其通过所设计的3种滤波器。

4.用Matlab自带的语音返回函数收听滤波后的语音信号,分析并比较其与原语音信号的差异。

2.设计原理:语音信号时一种非平稳的时变信号,它带着各种信息。

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波

数字信号处理课程设计报告书课题名称应用MATLAB对信号进行频谱分析及滤波姓名李光明学号20106480院、系、部电气系专业电子信息工程指导教师刘鑫淼2013年6月 28日应用MATLAB对信号进行频谱分析及滤波20106480 李光明一、设计目的用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。

二、设计要求1、用MATLAB产生正弦波,矩形波,并显示各自的时域波形图;2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明;3、绘制三种信号的均方根图谱;4、用IFFT恢复信号,并显示恢复的正弦信号时域波形图。

三、系统原理用FFT对信号作频谱分析是学习数字信号处理的重要内容。

经常需要进行频谱分析的信号是模拟信号和时域离散信号。

频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。

x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为:(3.1)其中(3.2)逆变换为:(3.3)但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。

本实验就是采用FFT,IFFT对信号进行谱分析。

四、程序设计1、产生正弦波及方波2、对正弦波及方波进行FFT变换并作频谱图(采样频率为1000Hz,数据长度为1024)3、求正弦波及方波FFT变换后的功率谱(数据长度为1024)4、用IFFT恢复原始信号(采样频率为1000Hz)程序如下:fs=input('请设定采样频率:');%设定采样频率N=input('请设定数据长度:');%设定数据长度t=0:0.001:1;f=100;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f*t);figure(1);subplot(211);plot(t,x);%作正弦信号的时域波形axis([0,0.1,-1,1]);title('正弦信号时域波形');z=square(60*t);subplot(212)plot(t,z)axis([0,1,-2,2]);title('方波信号时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; figure(2);subplot(211);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('正弦信号幅频谱图');y1=fft(z,N);%进行fft变换mag=abs(y1);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('方波信号幅频谱图');grid;%求功率谱sq=abs(y);power=sq.^2;figure(3)subplot(211);plot(f,power);title('正弦信号功率谱');grid;sq1=abs(y1);power1=sq1.^2;subplot(212);plot(f,power1);title('方波信号功率谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(4);subplot(211);plot(ti,magx);axis([0,0.1,-1,1]);title('通过IFFT转换的正弦信号波形');zifft=ifft(y1);magz=real(zifft);ti1=[0:length(zifft)-1]/fs;subplot(212);plot(ti1,magz);title('通过IFFT转换的方波信号波形');grid;五、仿真结果及分析图5-1 正弦及方波信号波形.图5-2 FFT变换后的正弦及方波信号幅频谱图图5-3 正弦及方波信号功率谱图图5-4 采样频率为1000Hz时IFFT还原后的正弦及方波信号波形图5-5 采样频率为200Hz时IFFT还原后的正弦及方波号信波形运用MATLAB可以绘制出当图5-1的周期为0.01s频率为1000Hz的正弦信号和占空比60%的方波信号,以及图5-2、图5-3的幅频谱图和功率谱图,其中正弦信号在频率为100HZ和900HZ时功率谱最大,说明信号中100HZ和900HZ的频率成分幅值最大。

基于MATLAB的语音信号分析及滤波

基于MATLAB的语音信号分析及滤波

目录1 MATLAB简介 (1)1.1 MATLAB的概况 (1)1.2 MATLAB产生的历史背景 (1)1.3 MATLAB的语言特点 (2)1.4 MATLAB界面介绍 (2)工作环境窗口 (2)当前路径窗口 (3)2 FIR滤波器的分析与设计 (4)窗函数法设计FIR滤波器 (4)2.2 FIR低通滤波器 (5)详细设计过程 (5)程序流程图 (5)2输出结果仿真 (6)2.3 FIR带通滤波器 (6)详细设计过程 (7)程序流程图 (7)输出结果仿真 (8)2.4 FIR高通滤波器 (8)详细设计过程 (8)程序流程图 (9)输出结果仿真 (9)3 IIR滤波器的分析与设计 (10)双线性变换法设计IIR滤波器 (10)3.2 IIR低通滤波器 (11)详细设计过程 (11)程序流程图 (12)输出结果仿真 (13)3.3 IIR带通滤波器 (13)详细设计过程 (13)程序流程图 (14)输出结果仿真 (15)3.4 IIR高通滤波器 (15)详细设计过程 (15)程序流程图 (16)输出结果仿真 (17)4 声音信号的滤波 (18)对信号进行滤波的流程 (18)对信号进行滤波的仿真 (18)滤波前后的时域对比 (18)滤波前后的频域对比 (20)5 图形用户界面GUI (21)5.1 GUI简介 (21)5.2 GUIDE及其组成部分 (21)基于滤波器应用的GUI设计 (21)6 总结 (23)参考文献 (24)附录 (25)1 MATLAB简介1.1 MATLAB的概况MATLAB是矩阵实验室(Matrix Laboratory)之意。

除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完相同的事情简捷得多。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字信号处理—综合实验报告综合实验名称:应用MatLab对语音信号进行频谱分析及滤波系:学生姓名:班级:学号:成绩:指导教师:开课时间学年学期目录一.综合实验题目 (1)二、综合实验目的和意义 (1)2.1 综合实验目的 (1)2.2 综合实验的意义 (1)三.综合实验的主要内容和要求 (1)3.2 综合实验的要求: (2)四.实验的原理 (2)4.1 数字滤波器的概念 (2)4.2 数字滤波器的分类 (2)(1)根据单位冲激响应h(n)的时间特性分类 (2)五.实验的步骤 (3)下面对各步骤加以具体说明。

5.1语音信号的采集 (3)5.2 语音信号的频谱分析; (3)5.3 设计数字滤波器和画出其频率响应 (5)5.3.1设计数字滤波器的性能指标: (5)5.3.2 用Matlab设计数字滤波器 (6)5.6 设计系统界面 (19)六、心得体会 (20)参考文献: (21)一.综合实验题目应用MatLab对语音信号进行频谱分析及滤波二、综合实验目的和意义2.1 综合实验目的为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,再者,加强学生对Matlab软件在信号分析和处理的运用综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。

2.2 综合实验的意义语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。

语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。

语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。

三.综合实验的主要内容和要求3.1综合实验的主要内容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;综合实验应完成的工作:(1)语音信号的采集;(2)语音信号的频谱分析;(3)数字滤波器的设计;(4)对语音信号进行滤波处理;(5)对滤波前后的语音信号频谱进行对比分析;3.2 综合实验的要求:(1)学生能够根据设计内容积极主动查找相关资料;(2)滤波器的性能指标可以根据实际情况作调整;(3)对设计结果进行独立思考和分析;(4)设计完成后,要提交相关的文档;①综合实验报告书(纸质和电子版各一份,具体格式参照学校课程设计管理规定),报告内容要涵盖设计题目、设计任务、详细的设计过程、原理说明、、频谱图的分析、调试总结、心得体会、参考文献(在报告中参考文献要做标注,不少于5篇)。

②可运行的源程序代码(电子版)(5)在基本要求的基础上,学生可以根据个人对该综合实验的理解,添加一些新的内容。

四.实验的原理4.1 数字滤波器的概念:若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF)。

【1】数字滤波器实质上是一种运算过程——用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。

数字滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。

它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。

【2】4.2 数字滤波器的分类:数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。

(1)根据单位冲激响应h(n)的时间特性分类无限冲激响应(IIR)数字滤波器有限冲激响应(FIR)数字滤波器[1](2)根据实现方法和形式分类递归型数字滤波器非递归型数字滤波器快速卷积型(3)根据频率特性分类低通数字滤波器、高通数字滤波器、带通数字波器4.3 滤波器的作用:滤波器是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的直流电【3】。

对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器,其功能就是得到一个特定频率或消除一个特定频率。

五.实验的步骤录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。

下面对各步骤加以具体说明。

5.1语音信号的采集:利用 PC机上的声卡和 Windows操作系统可以进行数字信号的采集。

将话筒插入计算机的语音输入插口上,启动录音机。

按下录音按钮,对话筒读一段话,读完后停止录音,屏幕左侧将显示所录声音的长度。

【1】5.2 语音信号的频谱分析:(1)首先画出由wavread函数采样后的信号的时域波形和它的频域响应波形;语音信号的程序如下:[x1,fs,bits]=wavread('c:\wudan2.wav'); %读取语音信号的数据,赋给变量x1figure(20)plot(x1) %做原始语音信号以44.1k采样后的时域图形title('原始语音采样后时域信号');xlabel('时间轴n');ylabel('幅值A');figure(21)freqz(x1) %绘制原始语音信号采样后的频率响应图title('原始语音信号采样后频率响应图');运行结果:图1图2(2) 对语音信号进行FFT变换,得到FFT频谱特性曲线,与原语音信号的频谱特性曲线进行比较。

语音信号FFT的程序如下:[x1,fs,bits]=wavread(' c:\wudan2.wav'); %读取语音信号的数据,赋给变量x1y1=fft(x1,1024); %对采样后信号做1024点FFT变换f=fs*(0:511)/1024;figure(19)subplot(2,1,1);plot(f,abs(y1(1:512)));title('原始语音信号频谱')xlabel('频率/Hz');ylabel('幅值')subplot(2,1,2);plot(abs(y1(1:1024))) %采样后信号的FFT频谱图title('原始语音信号FFT频谱')xlabel('点数N');ylabel('幅值');运行结果:图35.3 设计数字滤波器和画出其频率响应5.3.1设计数字滤波器的性能指标:①低通滤波器性能指标fb=1000Hz,fc=1200Hz, As=100db,Ap=1db。

②高通滤波器性能指标 fs=4800Hz,fb=5000Hz,As=100db,Ap=1db。

③带通滤波器性能指标 fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100db,Ap=1db。

5.3.2 用Matlab设计数字滤波器①用双线性变换法设计上面要求的3种滤波器。

在Matlab中,可以利用函数butter,cheby1和ellip设计IIR滤波器;利用Matlab中的函数frepz画出各滤波器的频率响应。

【2】②用窗函数法设计上面要求的3种滤波器。

在Matlab中,可以利用函数fir1设计FIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。

5.4对语音信号进行滤波处理用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

并比较滤波前后语音信号的波形及频谱。

【4】IIR低通滤波器程序如下:fs=22050;[x2]=wavread('c:\wudan2.wav');Ts=1/fs;R1=10;wp=2*pi*1000/fs;ws=2*pi*1200/fs;Rp=1;Rl=100;wp1=2/Ts*tan(wp/2); %将模拟指标转换成数字指标ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,R1,'s'); %选择滤波器的最小阶数[Z,P,K]=buttap(N); %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(16)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR低通滤波器')f1=filter(bz,az,x2);figure(17)subplot(2,1,1)plot(x2) %画出滤波前的时域图title('IIR低通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1); %画出滤波后的时域图title('IIR低通滤波器滤波后的时域波形');sound(f1,44100); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(18)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('IIR低通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('IIR低通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');【5】运行结果:图4图5图6IIR高通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');Fs=22050;Ts=1/Fs;R1=50;Wp=2*pi*5000/fs;Ws=2*pi*4800/fs;Rp=1;Rl=100;Wp1=2/Ts*tan(Wp/2); %将模拟指标转换成数字指标Ws1=2/Ts*tan(Ws/2);[N,Wn]=cheb2ord(Wp1,Ws1,Rp,Rl,'s'); %选择滤波器的最小阶数[Z,P,K]=cheb2ap(N,Rl); %创建切比雪夫模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2hp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(13)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR高通滤波器')f1=filter(bz,az,x1);figure(14)subplot(2,1,1)plot(x1) %画出滤波前的时域图title('IIR高通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1); %画出滤波后的时域图title('IIR高通滤波器滤波后的时域波形');sound(f1,44100); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(15)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('IIR高通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('IIR高通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');运行结果:图7图8图9IIR带通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');Fs=22050;Ts=1/Fs;R1=30;fb1=1200;fb2=3000;fc1=1000;fc2=3200;fs=22050;W1=2*fb1*pi/fs;W2=2*fc1*pi/fs;W3=2*fb2*pi/fs;W4=2*fc2*pi/fs;Wp=[W1,W3];Ws=[W2,W4];Rp=1;Rl=100;Wp1=2/Ts*tan(Wp/2); %将模拟指标转换成数字指标Ws1=2/Ts*tan(Ws/2);[N,Wn]=cheb2ord(Wp1,Ws1,Rp,R1,'s'); %选择滤波器的最小阶数[Z,P,K]=cheb2ap(N,Rl); %创建切比雪夫模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2bp(Bap,Aap,2100*2*pi,1800*2*pi);[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az); %绘制频率响应曲线figure(10)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR带通滤波器')f1=filter(bz,az,x1);figure(11)subplot(2,1,1)plot(x1) %画出滤波前的时域图title('IIR带通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1); %画出滤波后的时域图title('IIR带通滤波器滤波后的时域波形');sound(f1,44100); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(12)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512))); %画出滤波前的频谱图title('IIR带通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512))); %画出滤波后的频谱图title('IIR带通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值'); 【6】运行结果:图10图11图12FIR低通滤波器程序如下:fs=10000;x1=wavread('c:\wudan2.wav');wp=2*pi*1000/fs;ws=2*pi*1200/fs;Rp=1;Rs=100;wdelta=ws-wp;N=ceil(8*pi/wdelta); %取整wn=(wp+ws)/2;[b,a]=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率figure(7)freqz(b,a,512);title('FIR低通滤波器');f2=filter(b,a,x1);figure(8)subplot(2,1,1)plot(x1)title('FIR低通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR低通滤波器滤波后的时域波形');sound(f2,44100); %播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(9)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR低通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('FIR低通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值'); 【7】运行结果:图13图14图15 FIR高通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');wp=2*pi*5000/fs;ws=2*pi*4800/fs;Rp=1;Rs=100;wdelta=wp-ws;N=ceil(8*pi/wdelta); %取整wn=(wp+ws)/2;[b,a]=fir1(N,wn/pi,'high');figure(4)freqz(b,a,512);title('FIR高通滤波器');f2=filter(b,a,x1);figure(5)subplot(2,1,1)plot(x1)title('FIR高通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR高通滤波器滤波后的时域波形');sound(f2,44100); %播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(6)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR高通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('FIR高通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值'); 【9】运行结果:图16图17图18 FIR带通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');wp1=2*pi*1200/fs;wp2=2*pi*3000/fs;ws1=2*pi*1000/fs;ws2=2*pi*3200/fs;Rp=1;Rs=100;wp=(wp1+ws1)/2;ws=(wp2+ws2)/2;wdelta=wp1-ws1;N=ceil(8*pi/wdelta); %取整wn=[wp ws];[b,a]=fir1(N,wn/pi,'bandpass');figure(1)freqz(b,a,512);title('FIR带通滤波器');f2=filter(b,a,x1);figure(2)subplot(2,1,1)plot(x1)title('FIR带通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR带通滤波器滤波后的时域波形');sound(f2,44100); %播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR带通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512)));title('FIR带通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');运行结果:图19图20图215.5 回放语音信号在Matlab中,函数sound可以对声音进行回放。

相关文档
最新文档