信号分析课程设计
1. 课程设计要求利用MATLAB对语音信号进行分析和处理,要求学生采集语音信号后,在MATLAB软件平台进行频谱分
这是我刚做的双线性变换法低通滤波器,运行是正确的!ly是语音信号的名字,别的自己改改就行!
原语音信号程序
figure(1);
[y,fs,nbits]=wavread ('ly');
sound(y,fs,nbits); %回放语音信号
n = length (y) ; %求出语音信号的长度
Y=fft(y,n); %傅里叶变换
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
加噪语音信号程序
figure(2);
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出语音信号的长度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函数产生噪声
s=y+noise; %语音信号加入噪声
sound(s);
subplot(2,1,1);plot(s);title('加噪语音信号的时域波形');
S=fft(s); %傅里叶变换
subplot(2,1,2);plot(abs(S));title('加噪语音信号的频域波形')
滤波后的信号程序
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出语音信号的长度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函数产生噪声
s=y+noise; %语音信号加入噪声
z11=filter(num11,den11,s);
sound(z11);
m11=fft(z11); %求滤波后的信号
figure(3);
subplot(2,1,1);plot(z11);title('滤波后的信号波形');
subplot(2,1,2);plot(abs(m11),'r');title('滤波后信号的频谱');
你的串号我已经记下,采纳后我会帮你制作
2. 函数信号发生器课程设计
方案三:用单片集成函数发生器5G8038
可行性分析:
上面三种方案中,方案一与方案二中三角波——正弦波部分原理虽然不一样,但是他们有共通的地方就是都要认为地搭建波形变换的电路图。而方案三采用集成芯片使得电路大大简化,但是由于实验室条件和成本的限制,我们首先抛弃的是第三种方案,因为它是牺牲了成本来换取的方便。其次是对方案一与方案二的比较,方案一中用的是电容和电阻运放和三极管等电器原件,方案二是用的二极管、电阻、三极管、运放等电器原件,所以从简单而且便于购买的前提出发我们选择方案一为我们最终的设计方案。
1.4参数的确定
1、 从电路的设计过程来看电路分为三部分:①正弦波部分②方波部分③三角波部分
2、 正弦波部分
由于我们选取差分放大电路对三角波——正弦波
进行变换,首先要完成的工作是选定三极管,我
们现在选择KSP2222A型的三极管,其静态曲线图
像如右图所示。
根据KSP2222A的静态特性曲线,选取静态
工作区的中心
由直流通路有:
20 k
k
因为静态工作点已经确定,所以静态电流变成已知。根据KVL方程可计算出镜像电流源中各个电阻值的大小:
可得
3、 方波部分与三角波部分参数的确定
根据性能指标可知
由 ,可见f与c成正比,若要得到1Hz~10Hz,C为10 。10Hz~100Hz,C为1 。
则 =7.5k ~75k ,则 =5.1k
则 =2.4k 或者 =69.9 k
∴ 取100 k
∵
由输出的三角形幅值与输出方波的幅值分别为5v和14v,有
=
∴ =10k
则 ≈47 k , =20 k
根据方波的上升时间为两毫秒,查询运算放大器的速度,可以选择74141型号的运放。
由此可得调整电阻:
七、实务图的焊接和调试
1、按照方案一的电路图焊接好电路板。
2、调试前,将电路板接入±12伏电压,地线与电源处公共地线连接.
(1)频率范围:
为便于测量,将电路板上的方波信号接入示波器,并合上C1=10
3. 基于MATLAB的语音信号分析与处理的课程设计
第二种,记得要改73行声音路径
% % 程序1:用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱
% clear all
% close all
% clc
% fs=8000; %语音信号采样频率为8000
% x1=wavread('I:\2010教案\2010数字信号处理\rafarin_8k.wav',[1 4*5120]);
% t=(0:length(x1)-1)/8000;
% y1=fft(x1,2048); %对信号做2048点FFT变换
% f=fs*(0:1023)/2048;
% figure(1)
% plot(t,x1) %做原始语音信号的时域图形
% grid on; axis tight;
% title('原始语音信号');
% xlabel('time(s)');
% ylabel('幅度');
% figure(2)
% plot(f,abs(y1(1:1024))) %做原始语音信号的FFT频谱图
% grid on; axis tight;
% title('原始语音信号FFT频谱')
% xlabel('Hz');
% ylabel('幅度');
% sound(x1)
% %
% % **************************************************************************************************************************
%
% % % 程序2:给原始的语音信号加上一个高频余弦噪声,频率为3.8kHz。
% % 画出加噪后的语音信号时域和频谱图,与原始信号对比,可以很明显的看出区别。
% clear all;
% close all
% clc;
% fs=8000;
% x1=wavread('I:\2010教案\2010数字信号处理\rafarin_8k.wav',[1 4*5120]);
% t=(0:length(x1)-1)/8000;
% f=fs*(0:1023)/2048;
% Au=0.5;
% % d=[Au*cos(2*pi*3800*t)]'; %噪声为3.8kHz的余弦信号
% d=0.25*rand(1,length(x1))'; %随机噪声
% x2=x1+d;
% y1=fft(x1,2048);
% y2=fft(x2,2048);
% figure(1)
% subplot(2,1,1);
% plot(t,x1)
% grid on; axis tight;
% title('原始语音信号');
% xlabel('time(s)');
% ylabel('幅度');
% subplot(2,1,2);
% plot(t,x2)
% grid on; axis tight;
% title('加噪后的信号');
% xlabel('time(s)');
% ylabel('幅度');
% figure(2)
% subplot(2,1,1);
% plot(f,abs(y1(1:1024))); grid on; axis tight;
% title('原始语音信号频谱');
% xlabel('Hz'); ylabel('幅度');
% subplot(2,1,2);
% plot(f,abs(y2(1:1024)));grid on;axis tight;
% title('加噪语音信号频谱');
% xlabel('Hz');ylabel('幅度');
% sound(x2)
%
% **********************************************************************************************************************
%
% 程序3: 双线性变换法设计Butterworth滤波器
clear all;
close all
clc;
fs=8000;
x1=wavread('I:\2010教案\2010数字信号处理\rafarin_8k.wav',[1 4*5120]);
t=(0:length(x1)-1)/8000;
f=fs*(0:1023)/2048;
A1=0.05; A2=0.10;
d=[A1*cos(2*pi*3800*t)+A2*sin(2*pi*3600*t)]';
% d=0.25*rand(1,length(x1))'; %随机噪声
x2=x1+d;
wp=0.8*pi;
ws=0.85*pi;
Rp=1;
Rs=15;
Fs=8000;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2); %将模拟指标转换成数字指标
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'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(1)
plot(W*Fs/(2*pi),abs(H))
grid on;axis tight;
xlabel('频率(Hz)'); ylabel('频率响应')
title('Butterworth')
f1=filter(bz,az,x2); % 滤波
figure(2)
subplot(2,1,1)
plot(t,x2) %画出滤波前的时域图
grid on; axis tight;
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f1); %画出滤波后的时域图
grid on; axis tight;
title('滤波后的时域波形');
y3=fft(f1,2048);
figure(3)
y2=fft(x2,2048);
subplot(2,1,1);
plot(f,abs(y2(1:1024))); %画出滤波前的频谱图
grid on; axis tight;
title('滤波前的频谱')
xlabel('Hz');
ylabel('幅度');
subplot(2,1,2)
plot(f,abs(y3(1:1024))); %画出滤波后的频谱图
grid on; axis tight;
title('滤波后的频谱')
xlabel('Hz');
ylabel('幅度');
sound(x2,8000);
sound(f1,8000);
% %
% % ********************************************************************************************************************
% %
% 程序4:窗函数法设计滤波器:
% clear all;
% clc;
% fs=8000;
% x1=wavread('I:\2010教案\2010数字信号处理\rafarin_8k.wav',[1 4*5120]);
% t=(0:length(x1)-1)/8000;
% f=fs*(0:2047)/4096;
% A1=0.05;A2=0.10;
% d=[A1*cos(2*pi*3600*t)+A2*sin(2*pi*3800*t)]';
% x2=x1+d;
% wp=0.8*pi;
% ws=0.85*pi;
% wdelta=ws-wp;
% N=ceil(6.6*pi/wdelta); %取整
% wn=(0.8+0.85)*pi/2;
% [bz,az]=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率
% figure(1)
% freqz(bz,az);
% grid on; axis tight;
% f2=filter(bz,az,x2);
% figure(2)
% subplot(2,1,1)
% plot(t,x2);
% grid on;axis tight;
% title('滤波前的时域波形');
% subplot(2,1,2)
% plot(t,f2);
% grid on; axis tight;
% title('滤波后的时域波形');
% y3=fft(f2,4096);
% f=fs*(0:2047)/4096;
% figure(3)
% y2=fft(x2,4096);
% subplot(2,1,1);
% plot(f,abs(y2(1:2048)));
% grid on; axis tight;
% title('滤波前的频谱')
% xlabel('Hz');
% ylabel('幅度');
% subplot(2,1,2)
% plot(f,abs(y3(1:2048)));
% grid on; axis tight;
% title('滤波后的频谱')
% xlabel('Hz');
% ylabel('幅度');
% sound(f2,8000);
%
% % ***********************************************************************************************************************
% %
% % 程序5: 补零,提高分辨率。
% clear all; close all;
% t=0:0.01:3;
% s=sin(2*pi*5*t)+2*sin(2*pi*15*t);
% w=abs(fft(s));
% w2=abs(fft(s,4*301)); % 补零
% figure;
% subplot(211); plot(w);
% grid on; axis tight;
% subplot(212); plot(w2);
% grid on; axis tight;
%
% % ——理想滤波器——***************************************************************************
% %
% % 程序6: 理想低通滤波器
% clear all;close all;
% X=[ones(1,51) zeros(1,60) ones(1,50)]; % Frequency response of an ideal low-pass filter
% x=ifft(X); % IDFT of X with the same number of points
% Y=fft(x,483); % IDFT of X after it is padded with zeros
% stem([1:161]/161-0.5,abs(fftshift(X))); % figure 1
% axis([-0.5,0.5,0,1.5]);
% figure;
% stem(real(x)); % figure 2
% figure;
% stem([1:483]/483-0.5,abs(fftshift(Y))); % figure 3
% axis([-0.5,0.5,0,1.5]);
% figure;
% stem([1:161]/161-0.5,abs(fftshift(Y(1:3:481)))); % figure 4
% axis([-0.5,0.5,0,1.5]);
% % **********************************************************************************************************************
% % 程序7:理想带阻滤波器
% clear all;
% clc
% wp=0.8*pi;
% ws=0.85*pi;
% wdelta=ws-wp;
% N=ceil(6.6*pi/wdelta);
% wn=(0.8+0.85)*pi/2;
% [bz,az]=fir1(N,wn/pi,hamming(N+1));
% w=abs(fft(bz));w2=abs(fft(bz,399));
% figure;
% subplot(211);plot(w);grid on; axis tight;
% subplot(212);plot(w2);grid on; axis tight;
% h(1:201)=1;h(22:181)=0;
% x1=ones(1,17); x2=ones(1,11);
% w1=fft(x1,32); w2=fft(x2,32);
% w3=w1.*w2; x3=ifft(w3); plot(x3);
%
4. 数字信号课程设计
Matlab在数字信号处理课程设计中的应用
作者:李永全 来源:现代电子技术
摘 要:分析了数字信号处理课程的重要性及特点,为了帮助学生理解与掌握课程中的基本概念、基本原理、基本分析方法,提出了用Matlab进行数字信号处理课程设计的思路,并阐述了课程设计的具体方法、步骤和内容。
关键词:数字信号处理;课程设计;Matlab;频谱分析
1 《数字信号处理》课程的特点
《数字信号处理》课程是一门理论和技术发展十分迅速、应用非常广泛的前沿性学科,他的理论性和实践性都很强,他的特点是:
(1)要求的数学知识多,包括高等代数、数值分析、概率统计、随机过程等。
(2)要求掌握的基础知识强,网络理论、信号与系统是本课程的理论基础。
(3)与其他学科密切相关,即与通信理论、计算机、微电子技术不可分,又是人工智能、模式识别、神经网络等新兴学科的理论基础之一。
学生在学习这门课程时,普遍感到数字信号处理的概念抽象,对其中的分析方法与基本理论不能很好地理解与掌握。因此,如何帮助学生理解与掌握课程中的基本概念、基本原理、基本分析方法以及综合应用所学知识解决实际问题的能力,是本课程教学中所要解决的关键问题。为了配合《数字信号处理》专业基础课的理论教学,我们在电子信息工程专业教学计划中安排了二周的《数字信号处理》课程设计,他是针对《数字信号处理》的基础理论和算法进行实践环节的一个综合训练,以便学习巩固所学的知识,加强理论和实际结合的能力,培养学生的综合设计能力与实际工作能力。
Matlab语言是一种广泛应用于工程计算及数值分析 领域的新型高级语言,Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。因此,选择用Matlab进行课程设计。
2 基于Matlab的课程设计
为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,精心地安排了课程设计的内容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。下面对各步骤加以具体说明。
2.1 语音信号的采集
要求学生利用Windows下的录音机,录制一段自己的话音,时间在1 s内。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用,学生很快理解了采样频率、采样位数等概念。
2.2 语音信号的频谱分析
要求学生首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深学生对频谱特性的理解。其程序如下:
2.3 设计数字滤波器和画出其频率响应
给出各滤波器的性能指标:
(1)低通滤波器性能指标 fb=1 000 Hz,fc=1 200 Hz,As=100 dB,Ap=1 dB。
(2)高通滤波器性能指标 fc=4 800 Hz,fb=5 000 Hz As=100 dB,Ap=1 dB。
(3)带通滤波器性能指标 fb1=1 200 Hz,fb2=3 000 Hz,fc1=1 000 Hz,fc2=3 200 Hz,As=100 dB,Ap=1 dB。
要求学生用窗函数法和双线性变换法设计上面要求的3种滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte, cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。程序如下:
2.4 用滤波器对信号进行滤波
要求学生用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
2.5 比较滤波前后语音信号的波形及频谱
要求学生在一个窗口同时画出滤波前后的波形及频 谱。其程序如下:
2.6 回放语音信号
在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。
2.7 设计系统界面
为了使编制的程序操作方便,要求有能力的学生,设计处理系统的用户界面。在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
3 结语
笔者在电信97,98,99,00四届学生中,采用Matlab进行数字信号处理课程设计,实践证明,使学生加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能很好地理解与掌握数字信号处理中的基本概念、基本原理、基本分析方法。在课程设计中,让学生录制自己的声音,设计滤波器对声音进行处理,大大激发了同学们的学习兴趣,使学生很快地掌握编程方法和解决实际问题的技巧,取得了良好的教学效果。
参考文献
〔1〕程佩青.数字信号处理教程〔M〕.北京:清华大学出版社,2002.
〔2〕刘敏,魏玲.Matlab通信仿真与应用〔M〕.北京:国防工业出版社,2001.
5. 利用FFT完成离散信号与系统的频域分析 课程设计 老师说要用C语言 或者C++实现
张雷(FFT完成离散信号与系统的频域分析
分析清楚才是关键
但是问题,你还是不懂
6. 基于labview的课程设计
VHY蓝宝石戒!我来回答基于labview的课程设计
想要做好东西,就要找能坐下来深入研究的团队, 推荐你水源品牌设计 你咨询下! 收费也不高,青岛的价格 北京上海的服务, 想你会问 为什么 因为设计的模式创新了, 不在想其他公司一样要求70%的利润,他们保持30%以下。 有舍才有德,一个为客户着想的公司 所以我推荐他,我是他的设计,为员工为客户的公司 我们想信它!VHY
7. 课程设计的题目:基于MATLAB的语音信号分析及滤波
这是我刚做的双线性变换法低通滤波器,运行是正确的!ly是语音信号的名字,别的自己改改就行!
原语音信号程序
figure(1);
[y,fs,nbits]=wavread ('ly');
sound(y,fs,nbits); %回放语音信号
n = length (y) ; %求出语音信号的长度
Y=fft(y,n); %傅里叶变换
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
加噪语音信号程序
figure(2);
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出语音信号的长度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函数产生噪声
s=y+noise; %语音信号加入噪声
sound(s);
subplot(2,1,1);plot(s);title('加噪语音信号的时域波形');
S=fft(s); %傅里叶变换
subplot(2,1,2);plot(abs(S));title('加噪语音信号的频域波形')
滤波后的信号程序
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出语音信号的长度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函数产生噪声
s=y+noise; %语音信号加入噪声
z11=filter(num11,den11,s);
sound(z11);
m11=fft(z11); %求滤波后的信号
figure(3);
subplot(2,1,1);plot(z11);title('滤波后的信号波形');
subplot(2,1,2);plot(abs(m11),'r');title('滤波后信号的频谱');