【免费下载】 信号的基本运算和波形变换
- 格式:pdf
- 大小:277.81 KB
- 文档页数:9
信号的基本运算和波形变换一、实验目的对某一特定信号的运算有:放大、衰减、沿时间轴压缩、展宽、翻转、差分运算等等,借助MATLAB完成语音信号的采集,并以采集到的信号为研究对象,完成上述运算,体验运算效果。
二、实验原理以PC机上的声卡为主要硬件,使用MATLAB软件完成语音信号的采集,通过实验可以让大家切实体验对某一信号的运算所带来的效果。
根据个人要求效果的不同,通过修改实验中的相关参数,可以使其效果更佳。
以上方法简单使用,性价比高。
语音信号的频率范围大约是20Hz~20kHz,其频率成分主要集中在300~3400Hz,因此语音通信中国际上广泛采用8 kHz的采样速率,而目前一般的PC 机声卡采样速率都达到44.1kHz 或48kHz,其16 位的A/D 精度比普通的16位A/D卡都要高,是性价比很高数据采集卡,完全能满足一般的语音信号的采集分析要求。
借用PC机的现有资源加上MATLAB软件,可以方便的完成语音信号的采集、运算、频谱分析和滤波等。
使用MATLAB与声卡的接口函数完成语音信号的采集,可以将采集到的数据保存为wav格式的文件或者保存为数据,并编程实现采集到的语音信号的运算,通过听觉切实体验数字信号运算所带来的效果。
三、实验内容1 MATLAB中语音信号的采集对于配置了声卡并连接了麦克风的计算机,MATLAB中可以采用命令wavrecord来录音,其调用格式是:y=wavrecord(n,Fs,ch,dtype);其中,n为总的取样点数,Fs为取样速率(样点/s),标准取样速率可设为8000、11025(默认)、22050以及44100样点/s。
用户也可以设定其他取样速率值,如Fs=10000,但必须满足采样定理的要求,否则将导致录音结果失真。
ch为录音声道数,默认ch=1,为单声道录音;若ch=2,则为立体声录音,这时需要声卡能够支持双声道录音并配有两个话筒。
dtype 为记录的数据格式,有double(默认),single,int16,int8等几种类型。
4.信号的基本运算与波形变换
4.1.信号的基本运算
4.1.1.信号的相加和相乘
4.1.2.连续时间信号的微分和离散时间序列的差分运算
(后向差分)
4.1.3.连续时间信号的积分和离散时间序列的累积运算
4.1.4.取模(或取绝对值)运算
4.2.自变量变换导致的波形变换4.2.1.信号的时移
4.2.2.信号的折叠
4.2.3.信号的尺度变换
4.3.信号的卷积运算
4.3.1.连续信号的卷积积分
定义:
从连续信号的分解看卷积的意义:
连续信号分解为矩形脉冲序列
卷积的定义式反映了这样一个事实:一个连续时间信号可以
展开成无穷多个单位冲激信号的线性组合。
于是这个信号通过一个线性系统后得到的输出信号,就可以用单位冲激信号的响应组合而成。
这种组合的关系也是同样的卷积运算关系:
卷积计算的方法:
图形扫描法:
(1)自变量代换
(2)反转、平移
(3)相乘、积分(求面积)
(4)平移、相乘、积分(求面积)
交换率、分配率、结合律
4.3.2.离散序列的卷积和
从离散序列的分解看卷积定义的意义:
同样的如果一个线性系统对于单位冲激的响应是h[n],则这个系统对于f[n]的响应是:f[n]*h[n]
卷积和的运算规律:交换率、分配率、结合率
卷积和的计算方法:
例:
MATLAB函数conv(u,v)。
信号的基本运算和波形变换一、实验目的1.掌握用matlab软件产生基本信号的方法.2.应用matlab软件实现信号的加、减、乘、反褶、移位、尺度变换及卷积运算。
二、实验原理(一)产生信号波形的方法利用Matlab软件的信号处理工具箱(Signal Processing Toolbox)中的专用函数产生信号并绘出波形。
a.产生正弦波t=0:0.01:3*pi;y=sin(2*t);plot(t,y)b.产生叠加随机噪声的正弦波t=0:0.01:3*pi;y=10*sin(2*t);s=y+randn(size(t));plot(t,s)c. 产生周期方波t=0:0.01:1;y=square(4*pi*t);plot(t,y)d. 产生周期锯齿波t=(0:0.001:2.5);y=sawtooth(2*pi*30*t);plot(t,y),axis([0 0.2 -1 1])e.产生Sinc函数x=linspace(-5,5);y=sinc(x);plot(x,y)f.产生指数函数波形x=linspace(0,1,100);y=exp(-x);plot(x,y)(二)信号的运算1.加(减)、乘运算要求二个信号序列长度相同.例t=0:0.01:2;f1=exp(-3*t);f2=0.2*sin(4*pi*t);f3=f1+f2;f4=f1.*f2;subplot(2,2,1);plot(t,f1);title('f1(t)');subplot(2,2,2);plot(t,f2);title('f2(t)');subplot(2,2,3);plot(t,f3);title('f1+f2');subplot(2,2,4);plot(t,f4);title('f1*f2');2.用matlab的符号函数实现信号的反褶、移位、尺度变换.由f(t)到f(-at+b)(a>0)步骤:b)at f(b)f(at b)f(t f(t)位位位位位位+-−−→−+−−→−+−−→−例:已知f(t)=sin(t)/t,试通过反褶、移位、尺度变换由f(t)的波形得到f(-2t+3) 的波形.syms t;f=sym('sin(t)/t'); %定义符号函数f(t)=sin(t)/t f1=subs(f,t,t+3); %对f 进行移位f2=subs(f1,t,2*t); %对f1进行尺度变换f3=subs(f2,t,-t); %对f2进行反褶subplot(2,2,1);ezplot(f,[-8,8]);grid on;% ezplot 是符号函数绘图命令subplot(2,2,2);ezplot(f1,[-8,8]);grid on;subplot(2,2,3);ezplot(f2,[-8,8]);grid on;subplot(2,2,4);ezplot(f3,[-8,8]);grid on;(注:也可用一条指令:subs(f,t,-2*t+3)实现f(t)到f(-2t+3)的变换)(三) 卷积运算Y=conv(x,h)实现x,h 二个序列的卷积,假定都是从n=0开始.Y 序列的长度为x,h 序列的长度之和再减1. 1、二个方波信号的卷积.y1=[ones(1,20),zeros(1,20)];y2=[ones(1,10),zeros(1,20)];y=conv(y1,y2);n1=1:length(y1);n2=1:length(y2);L=length(y)subplot(3,1,1);plot(n1,y1);axis([1,L,0,2]);subplot(3,1,2);plot(n2,y2);axis([1,L,0,2]);n=1:L;subplot(3,1,3);plot(n,y);axis([1,L,0,20]);2、二个指数信号的卷积.t=0:0.01:1;y1=exp(-6*t);y2=exp(-3*t);y=conv(y1,y2);l1=length(y1)l2=length(y2)l=length(y)subplot(3,1,1);plot(t,y1);subplot(3,1,2);plot(t,y2);t1=0:0.01:2;subplot(3,1,3);plot(t1,y);三、实验内容1.自选二个简单的信号,进行加、乘、卷积运算.2.自选一个简单的信号进行反褶、平移、尺度变换运算.四、实验要求1.预习实验原理;2.对实验内容编写程序(M 文件),上机运行;3.绘出运算或变换后信号的波形.五、思考题1. Matlab 的仿真特点2. conv 卷积的函数实现与理论值之间的关系。
实验一信号的基本运算和波形变换一、实验目的1.掌握基本的变量和矩阵的运算。
2.熟悉和掌握常用的用于信号的时域变换;3.掌握用周期延拓的方法将一个非周期信号进行周期信号延拓形成一个周期信号的MATLAB编程;二、实验设备计算机,MATLAB软件三、实验原理1 信号的基本运算1.1+、-、×运算两信号f1(·) 和f2(·)的相+、-、×指同一时刻两信号之值对应相加、减、乘。
下面矩形信号的MA TLAB程序表示,就采用了之前的扩展函数,设幅度A=1,宽度为W=2。
% Program2_1% rectangular pulse signalt=0:0.001:4;ft=u(t-1)- u(t-3);plot(t,ft);grid on;axis([0 4 -0.5 1.5]);也可以用矩形函数表述:% rectangular pulse signalt=0:0.001:4;T=1;ft=rectpuls(t-2*T,2*T);plot(t,ft);grid on;axis([0 4 -0.5 1.5]);2 信号的时域变换2.1 信号的时移信号的时移可用下面的数学表达式来描述:设一个连续时间信号为x(t),它的时移y(t) 表示为:y(t) = x(t - t0) 2.1其中,t0为位移量。
若t0为正数,则y(t)等于将x(t)右移t0秒之后的结果。
反之,若t0为负数,则y(t)等于将x(t)左移t0秒之后的结果。
在MA TLAB中,时移运算与数学上习惯表达方法完全相同。
程序Program2_3对给定一个连续时间信号x(t) = e-0.5t u(t),对它分别左移2秒钟和右移2秒钟得到信号x1(t) = e-0.5(t+2)u(t+2)和x2(t) = e-0.5(t-2)u(t-2)。
% Program2_2% This program is used to implement the time-shift operation% on a continuous-time signal and to obtain its time-shifted versions% and to draw their plots.clear,close all,t = 0:0.01:5;x = exp(-0.5*t) ; % Generate the original signal x(t) x1 = exp(-0.5*(t+2)) ; % Shift x(t) to the left by 2 second to get x1(t) x2 = exp(-0.5*(t-2)) ; % Shift x(t) to the right by 2 second to get x2(t) subplot(3,1,1)plot(t,x) % Plot x(t) grid on,title ('Original signal x(t)') subplot (3,1,2)plot (t,x1) % Plot x1(t) grid on,title ('Left shifted version of x(t)') subplot (3,1,3)plot (t,x2) % Plot x2(t) grid on,title ('Right shifted version of x(t)') xlabel ('Time t (sec)')00.51 1.52 2.53 3.54 4.5500.51Original signal x(t)00.51 1.52 2.53 3.54 4.5500.20.4Left shifted version of x(t)00.51 1.522.533.544.5524Right shifted version of x(t)Time t (sec)2.2 信号的时域反转对一个信号x[n]的反转运算在数学上表示为y[n] = x[-n] 2.2这种反转运算,用MATLAB 实现起来也是非常简单的。
信号的基本运算和波形变换一、实验目的1.掌握用matlab软件产生基本信号的方法.2.应用matlab软件实现信号的加、减、乘、反褶、移位、尺度变换及卷积运算。
二、实验原理(一)产生信号波形的方法利用Matlab软件的信号处理工具箱(Signal Processing Toolbox)中的专用函数产生信号并绘出波形。
a.产生正弦波t=0:0.01:3*pi;y=sin(2*t);plot(t,y)b.产生叠加随机噪声的正弦波t=0:0.01:3*pi;y=10*sin(2*t);s=y+randn(size(t));plot(t,s)c. 产生周期方波t=0:0.01:1;y=square(4*pi*t);plot(t,y)d. 产生周期锯齿波t=(0:0.001:2.5);y=sawtooth(2*pi*30*t);plot(t,y),axis([0 0.2 -1 1])e.产生Sinc函数x=linspace(-5,5);y=sinc(x);plot(x,y)f.产生指数函数波形x=linspace(0,1,100);y=exp(-x);plot(x,y)(二)信号的运算1.加(减)、乘运算要求二个信号序列长度相同.例t=0:0.01:2;f1=exp(-3*t);f2=0.2*sin(4*pi*t);f3=f1+f2;f4=f1.*f2;subplot(2,2,1);plot(t,f1);title('f1(t)');subplot(2,2,2);plot(t,f2);title('f2(t)');subplot(2,2,3);plot(t,f3);title('f1+f2');subplot(2,2,4);plot(t,f4);title('f1*f2');2.用matlab的符号函数实现信号的反褶、移位、尺度变换.由f(t)到f(-at+b)(a>0)步骤:b)at f(b)f(at b)f(t f(t)位位位位位位+-−−→−+−−→−+−−→−例:已知f(t)=sin(t)/t,试通过反褶、移位、尺度变换由f(t)的波形得到f(-2t+3) 的波形.syms t;f=sym('sin(t)/t'); %定义符号函数f(t)=sin(t)/tf1=subs(f,t,t+3); %对f 进行移位f2=subs(f1,t,2*t); %对f1进行尺度变换f3=subs(f2,t,-t); %对f2进行反褶subplot(2,2,1);ezplot(f,[-8,8]);grid on;% ezplot 是符号函数绘图命令subplot(2,2,2);ezplot(f1,[-8,8]);grid on;subplot(2,2,3);ezplot(f2,[-8,8]);grid on;subplot(2,2,4);ezplot(f3,[-8,8]);grid on;(注:也可用一条指令:subs(f,t,-2*t+3)实现f(t)到f(-2t+3)的变换)(三) 卷积运算Y=conv(x,h)实现x,h 二个序列的卷积,假定都是从n=0开始.Y 序列的长度为x,h 序列的长度之和再减1.1、二个方波信号的卷积.y1=[ones(1,20),zeros(1,20)];y2=[ones(1,10),zeros(1,20)];y=conv(y1,y2);n1=1:length(y1);n2=1:length(y2);L=length(y)subplot(3,1,1);plot(n1,y1);axis([1,L,0,2]);subplot(3,1,2);plot(n2,y2);axis([1,L,0,2]);n=1:L;subplot(3,1,3);plot(n,y);axis([1,L,0,20]);2、二个指数信号的卷积.t=0:0.01:1;y1=exp(-6*t);y2=exp(-3*t);y=conv(y1,y2);l1=length(y1)l2=length(y2)l=length(y)subplot(3,1,1);plot(t,y1);subplot(3,1,2);plot(t,y2);t1=0:0.01:2;subplot(3,1,3);plot(t1,y);三、实验内容1.自选二个简单的信号,进行加、乘、卷积运算.2.自选一个简单的信号进行反褶、平移、尺度变换运算.四、实验要求1.预习实验原理;2.对实验内容编写程序(M 文件),上机运行;3.绘出运算或变换后信号的波形.五、思考题1. Matlab 的仿真特点2. conv 卷积的函数实现与理论值之间的关系。
实验二、波的合成与分解一、实验内容对图所示的周期为4的信号进行分析二、实验要求在Matlab 环境下,编程实现图1 所示的连续周期信号f(t)的傅立叶级数,并进行普分析。
三、程序及运行结果(一)对图1进行傅立叶级数展开(1).由于在一个T 内,f(t)为奇函数,所以其傅立叶级数展开式仅含有sin()项;并且f(t)为奇谐函数,因而含有正弦函数的奇次分量。
则不难求得:n=1,3,5…])sin(1)5sin(51)3sin(31)[sin(4)( +Ω++Ω+Ω+Ω∏=t n n t t t t f (详见课本P123)任何周期函数的傅立叶级数展式,是其最小误差近似式。
在合成波的间断点,存在9%偏差,称之为吉布斯(Gibbs )现象。
(2).根据上式,编程验证如下:Ts=4t=-10:0.01:10;xt1=0;for n=1:2:10xt1=((sin(n*2*pi*t/Ts))/n)*4/pi+xt1;end%subplot(1,2,1)plot(t,xt1)xlabel('t');ylabel('cos(2*pi*t)+cos(pi*t)');grid运行结果:(a)当for 语句为for n=1:2:5时,程序运行结果为:n=5图像(b)当for语句为for n=1:2:10时,程序运行结果为:n=10图像(c)当for 语句为for n=1:2:20时,程序运行结果为:n=20图像(二)对图2所示的周期矩形脉冲信号进行频谱分析 (3) 2,1,0,)2sin(2)2sin()(122±±=∏Ω=ΩΩ==⎰-Ω-n n t n t n t n T dt e t f T F T T t jn n τT∏=Ω2t jn n e n sa t f Ω∞-∞=∑∏=)()(T T ττ(1)编程验证如下:T=4t=0.5;n=-40:1:40%k=n.^-1fn=sin(2*pi/T*n*t/2)./(n*pi)i=find(isnan(fn))fn(i)=t./T stem(n,fn);说明:a)、T 为举行脉冲的周期; b)、=t ;2ττc)、i=find(isnan(fn)),fn(i)=t./T为寻找N=0项,并使之为T2)程序运行结果τ当T=4时,(T=4;t=0.5)周期性矩形脉冲的频谱为:τT=4时,(T=4;t=0.5)周期性矩形脉冲的频谱结论1:周期函数的频谱是离散的。
τ当T=8时,(T=4;t=0.25)周期性矩形脉冲的频谱为:τT=8时,(T=4;t=0.25)周期性矩形脉冲的频谱为:结论2:周期相同时,相邻普线的间隔相同;脉宽愈窄,其频谱包络线的第一个零点的频率愈高,频带内的分量愈多。
1可见:信号的频带宽度与脉冲的宽度成正比。
△F=。
τ(2)双边功率普程序设计:T=4t=0.5;N=20;n=-N:1:N;fn=sin(2*pi/T*n*t/2)./(n*pi);i=find(isnan(fn));fn(i)=t./T;k=-N:1:N;kn=abs(fn).^2;stem(k,kn);运行结果:双边功率普The element type "name" must be terminated by the matching end-tag "</name>".Could not parse the file: c:\matlab7\toolbox\ccslink\ccslink\info.xml>> t=0:0.01:2;f1=sin(t);f2=sin(2*pi*t);f3=f1+f2;f4=f1.*f2;subplot(2,2,1);plot(t,f1);title('f1(t)');subplot(2,2,2);plot(t,f2);title('f2(t)');subplot(2,2,3);plot(t,f3);title('f1+f2');subplot(2,2,4);plot(t,f4);title('f1*f2');>> f=sym('sinc(t)/t');f1=subs(f,t,t+3);f2=subs(f1,t,2*t);f3=subs(f2,t,-t);subplot(2,2,1);ezplot(f,[-8,8]);grid on;subplot(2,2,2);ezplot(f1,[-8,8]);grid on;subplot(2,2,3);ezplot(f2,[-8,8]);grid on;subplot(2,2,4);ezplot(f3,[-8,8]);grid on;Error using ==> mapleat offset 12, unexpected end of statementError in ==> sym.subs at 228NEWf = maple(['eval(subs(' celleqn(OLDexpr,NEWexpr) ',' char(OLDf) '));']);>> f=sym('exp(-t)/t'); %定义符号函数f(t)=exp(-t)/tf1=subs(f,t,t+3); %对f进行移位f2=subs(f1,t,2*t); %对f1进行尺度变换f3=subs(f2,t,-t); %对f2进行反褶subplot(2,2,1);ezplot(f,[-8,8]);grid on;% ezplot是符号函数绘图命令subplot(2,2,2);ezplot(f1,[-8,8]);grid on;subplot(2,2,3);ezplot(f2,[-8,8]);grid on;subplot(2,2,4);ezplot(f3,[-8,8]);grid on;>> t=0:0.01:1;y1=exp(t);y2=exp(3*t);y=conv(y1,y2);l1=length(y1)l2=length(y2)l=length(y)subplot(3,1,1);plot(t,y1);subplot(3,1,2);plot(t,y2);t1=0:0.01:2;subplot(3,1,3);plot(t1,y);l1 =101l2 =101l =201>> t=0:0.01:1;y1=sin(t);y2=sin(3*t);y=conv(y1,y2);l1=length(y1)l2=length(y2)l=length(y)subplot(3,1,1);plot(t,y1); subplot(3,1,2);plot(t,y2); t1=0:0.01:2;subplot(3,1,3);plot(t1,y); l1 =101l2 =101l =201>>。