连续时间信号卷积运算的MATLAB实现 (2)

连续时间信号卷积运算的MATLAB实现 (2)
连续时间信号卷积运算的MATLAB实现 (2)

连续时间信号卷积运算的MATLAB 实现

一、实验目的

(1) 理解掌握卷积的概念及物理意义。 (2) 理解单位冲击响应的概念及物理意义。 二、实验原理

根据前述知识,连续信号卷积运算定义为

1212()()()()()f t f t f t f f t d τττ∞

-∞

=*=-?

卷积计算可以通过信号分段求和来实现,即

1212120

()()()()()lim

()()k f t f t f t f f t d f k f t k τττ∞

-∞

?→=-∞

=*=-=??-???∑

?

如果只求当t n =?(n 为整数)时()f t 的值()f n ?,则由上式可得

1212()()()()[()]k k f n f k f n k f k f n k ∞

=-∞

=-∞

?=??

???-?=??

??-?∑

上式中的

12()[()]k f k f n k ∞

=-∞

??-?∑

实际上就是连续信号1()f t 和2()f t 经等时间间隔?均

匀抽样的离散序列1()f k ?和2()f k ?的卷积和。当?足够小时,()f n ?就是卷积积分的结果——连续时间信号()f t 的较好的数值近似。

例题:1()t t-1f t εε=()-(),21

()()t t-22

f t R t εε=

*【()-()】

,利用matlab 绘出其卷积波形; 理论分析如下:

当0t <时,12()()()0f t f t f t =*=

当01t <<时,2

120()()()1()24

t

t

t f t f t f t dt τ-=*=?-

=? 当12t <<时,1

120

1

()()()1()2

24

t

t f t f t f t dt τ-=*=

?-

=

-?

当23t <<时,21

12t-23()()()1()2424

t

t t f t f t f t dt τ-=*=?-

=-++? 当3t >时,12()()()0f t f t f t =*= 手工绘图如下:

三、仿真

1、源程序

调用函数sconv编辑如下:

调用函数heaviside编辑如下:

主函数编辑如下:

2、图形

运行matlab后,图形如下:

四、结论

通过本次实验理解掌握了卷积的概念及物理意义。运用基本的matlab语言即可编写成功。整体思路是这样的:首先是要对函数进行离散化处理,编写sconv()函数与heaviside (),然后再在主函数中调用sconv()函数与heaviside()。在编写程序其间,掌握了matlab 的一些基本语言,学会了试用matlab对卷积进行仿真,收获很大。

.

例题

9-2 设信号()(1)(2)(2)2

t f t t t εε=++-【

-】,试用MATLAB 求解

(2)()(2)()f t f t f t f t +-、、、-,画出相应的波形。

所用MATLAB命令如下:

首先利用下列语句创建函数文件heaviside.m

然后再建立下列主程序hsys.m并运行,结果如下图所示。

例9-4 已知两个连续时间信号图形如下:试用MATLAB 求12()()()f t f t f t =*,并绘出()f t 的时域波形图。

编辑主函数如下:

得到题目所给的图形,当p 足够小的时候函数sconv ()的计算结果就是连续时间卷积

12()()()f t f t f t =*的较好的数值近似,因而取p=0.01。得到图形如下:

实验四-使用matlab实现卷积的运算

一 实验目的 1、 学习MATLAB 语言的编程方法及熟悉MATLAB 指令; 2、 深刻理解卷积运算,利用离散卷积实现连续卷积运算; 二 实验内容 1、 完成)(1t f 与)(2t f 两函数的卷积运算 其中:)4()()(), ()(221--==-t u t u t f t u e t f t 在一个图形窗口中,画出)(1t f 、)(2t f 以 及卷积结果。要求每个坐标系有标题、坐标轴名称。 p = ; %定义时间间隔 t= 0:p:10; %定义时间向量 f1=exp(-2*t).*u(t); %将f (t )表示出来 f2=u(t)-u(t-4); f=conv(f1,f2); subplot(1,2,1); plot(t,f1,t,f2); title('f1=e^-2t*u(t)'' / ''f2=u(t)-u(t-4)'); xlabel('t(sec)'); % 这行代码是给出x 坐标的标签 ylabel('f(t)'); grid on ; subplot(1,2,2); plot(f); title('f=f1*f2'); xlabel('t(sec)'); % 这行代码是给出x 坐标的标签 ylabel('f') grid on

2、 若系统模型为: )(3)()(4)(4)(' ' ' 't f t f t y t y t y +=++ 其中 )()(t u e t f t -= 求零状态响应,画出波形(函数本身画出一幅图,自己再画出一幅输入波形图)。 零状态响应: a= [1 4 4]; %将y (t )各阶导数的系数放在向量a 中 b= [1 3]; %将f (t )各阶导数的系数放在向量b 中 sys = tf(b, a); %求系统函数sys td = ; %定义时间间隔 t = 0 : td : 10; %定义时间向量 f = exp(-t).*u(t); %将f (t )表示出来 y = lsim(sys, f, t); %求系统的零状态响应y plot(t, y); %绘出零状态响应的波形 xlabel('t(sec)'); % 这行代码是给出x 坐标的标签 ylabel('y(t)'); % 这行代码是给出y 坐标的标签 grid on

matlab频谱分析

设计出一套完整的系统,对信号进行频谱分析和滤波处理; 1.产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 2.采集一段含有噪音的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),对其进行采样和频谱分析,根据分析结果设计出一合适的滤波器滤除噪音信号。 %写上标题 %设计低通滤波器: [N,Wc]=buttord() %估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc [a,b]=butter(N,Wc); %设计Butterworth低通滤波器 [h,f]=freqz(); %求数字低通滤波器的频率响应 figure(2); % 打开窗口2 subplot(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);

matlab实现卷积运算

2、试求下列图片的卷积波形12()()f t f t * 2() f t t 1 -1 1() f t t 1 -1 列出编程步骤: p=0.01; k1=0:p:1; f1=ones(1,length(k1)); k2=-1:p:1; f2= (k2+1).*(k2<0)+(-k2+1).*(k2>=0); [f,k]=sconv(f1,f2,k1,k2,p) function [f,k]=sconv(f1,f2,k1,k2,p) 3、试求下列图片的卷积波形12()()f t f t *

1() f t t 1 0.5- 2() f t t 12 1 p=0.01; k1=-0.5:p:1; f1=ones(1,length(k1)); k2=0:p:2; f2= 0.5*k2; [f,k]=sconv(f1,f2,k1,k2,p) 4、试求下列图片的卷积波形12()()f t f t *

1() f t t 2 2 - 2() f t t 3-2 -3 21 p=0.01; k1=-2:p:2; f1= (k1==-2)+(k1==2); k2=-3:p:3; f2=(k2+3).*(k2<-2)+(-k2-1).*(k2>=-2).*(k2<=-1)+(k2-1).*(k2>=1).*(k2<=2)+(-k2+3).*(k2>2); [f,k]=sconv(f1,f2,k1,k2,p); 5、试求下列图片的卷积波形12()()f t f t *

1() f t t 5 -5 33 -2() f t t 3 -2 -3 21 p=0.01; k1=-10:p:10; f1=(k1>=-5).*(k1<=-3)+(k1>=3).*(k1<=5); k2=-3:p:3; f2=(k2+3).*(k2<-2)+(-k2-1).*(k2>=-2).*(k2<=-1)+(k2-1).*(k2>=1).*(k2<=2)+(-k2+3).*(k2>2); [f,k]=sconv(f1,f2,k1,k2,p);

利用MATLAB实现循环卷积.doc

一、实验目的 1.利用MATLAB 实现循环卷积。 2.比较循环卷积与线性卷积的区别。 二、实验条件 PC 机,MATLAB7.0 三、实验内容 1)循环卷积的定义:两个序列的N 点循环卷积定义为: )0()()()]()([1 0N n m n x m h n x n h N k N N <≤-=?∑-= 利用MATLAB 实现两个序列的循环卷积可以分三个步骤完成: (1)初始化:确定循环点数N ,测量输入2个序列的长度。 (2)循环右移函数:将序列x(n)循环右移,一共移N 次(N 为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V 。 (3)相乘:将x(n)移位后组成的矩阵V 与第二个序列h(n)对应相乘,即得循环卷积结果。程序如下: 程序一: clear;close all ; N=10; x1=[6 15 -6 3 5 7 0 1]; x2=[7 1 2 9 4 3 20 6]; xn1=length(x1); xxn1=0:xn1-1; xn2=length(x2); xxn2=0:xn2-1; subplot(3,1,1); stem(xxn1,x1); subplot(3,1,2); stem(xxn2,x2); x11=fft(x1,N);

x12=fft(x2,N); y11=x11.*x12; y1=ifft(y11,N); subplot(3,1,3); n=0:length(y1)-1; stem(n,y1,'.'); title('循环卷积的结果'); xlabel('n');ylabel('y1(n)'); 运行后所得图形如下: 观察所得的循环卷积结果发现并没有呈现周期性的序列,因此将程序做下列改变。程序二: clear;close all; N=40; x1=[6 15 -6 3 5 7 0 1]; x2=[7 1 2 9 4 3 20 6]; x2=[x2,x2,x2,x2]; xn1=length(x1); xxn1=0:xn1-1; xn2=length(x2); xxn2=0:xn2-1; subplot(3,1,1);

matlab-离散信号傅里叶变换

1.请用MATLAB编写程序,实现任意两个有限长度序列的卷积和。要求用图 形显示两个序列及卷积结果。 解:y(n)=∑x(i)h(n-i) 假设x(n)={1,2,3,4,5}; h(n)={3,6,7,2,1,6}; y(n)=x(n)*h(n) 验证:y[n]=[1,12,28,46,65,72,58,32,29,30] 【程序】 N=5 M=6 L=N+M-1 x=[1,2,3,4,5] h=[3,6,7,2,1,6] y=conv(x,h) nx=0:N-1 nh=0:M-1 ny=0:L-1 subplot(131);stem(nx,x,'*b');xlabel('n');ylabel('x(n)');grid on subplot(132);stem(nh,h,'*b');xlabel('n');ylabel('h(h)');grid on subplot(133);stem(ny,y,'*r');xlabel('n');ylabel('y(h)');grid on 【运行结果】

2.已知两个序列x[n]=cos(n*pi/2), y[n]=e j*pi*n/4x[n],请编写程序绘制 X(e jw)和Y(e jw)和幅度和相角,说明它们的频移关系。 –提示:用abs函数求幅度,用angle求相角。 【程序】 n=0:15; x=cos(n*pi/2); y=exp(j*pi*n/4).*x; X=fft(x); Y=fft(y); magX=abs(X); angX=angle(X); magY=abs(Y); angY=angle(Y); subplot(221);stem(n,magX,'*r');xlabel('频率');ylabel('幅度');grid on; subplot(222);stem(n,angX,'*b');xlabel('频率');ylabel('相位');grid on; subplot(223);stem(n,magY,'*r');xlabel('频率');ylabel('幅度');grid on; subplot(224);stem(n,angY,'*b');xlabel('频率');ylabel('相位');grid on;

信号的频谱分析及MATLAB实现

第23卷第3期湖南理工学院学报(自然科学版)Vol.23 No.3 2010年9月 Journal of Hunan Institute of Science and Technology (Natural Sciences) Sep. 2010信号的频谱分析及MATLAB实现 张登奇, 杨慧银 (湖南理工学院信息与通信工程学院, 湖南岳阳 414006) 摘 要: DFT是在时域和频域上都已离散的傅里叶变换, 适于数值计算且有快速算法, 是利用计算机实现信号频谱分析的常用数学工具. 文章介绍了利用DFT分析信号频谱的基本流程, 重点阐述了频谱分析过程中误差形成的原因及减小分析误差的主要措施, 实例列举了MATLAB环境下频谱分析的实现程序. 通过与理论分析的对比, 解释了利用DFT分析信号频谱时存在的频谱混叠、频谱泄漏及栅栏效应, 并提出了相应的改进方法. 关键词: MA TLAB; 频谱分析; 离散傅里叶变换; 频谱混叠; 频谱泄漏; 栅栏效应 中图分类号: TN911.6 文献标识码: A 文章编号: 1672-5298(2010)03-0029-05 Analysis of Signal Spectrum and Realization Based on MATLAB ZHANG Deng-qi, YANG Hui-yin (College of Information and Communication Engineering, Hunan Institute of Science and Technology, Yueyang 414006, China) Abstract:DFT is a Fourier Transform which is discrete both in time-domain and frequency-domain, it fits numerical calculation and has fast algorithm, so it is a common mathematical tool which can realize signal spectrum analysis with computer. This paper introduces the basic process of signal spectrum analysis with DFT, emphasizes the causes of error producing in spectrum analysis process and the main ways to decrease the analysis error, and lists the programs of spectrum analysis based on MATLAB. Through the comparison with the theory analysis, the problems of spectrum aliasing, spectrum leakage and picket fence effect are explained when using DFT to analyze signal spectrum, and the corresponding solution is presented. Key words:MATLAB; spectrum analysis; DFT; spectrum aliasing; spectrum leakage; picket fence effect 引言 信号的频谱分析就是利用傅里叶分析的方法, 求出与时域描述相对应的频域描述, 从中找出信号频谱的变化规律, 以达到特征提取的目的[1]. 不同信号的傅里叶分析理论与方法, 在有关专业书中都有介绍, 但实际的待分析信号一般没有解析式, 直接利用公式进行傅里叶分析非常困难. DFT是一种时域和频域均离散化的傅里叶变换, 适合数值计算且有快速算法, 是分析信号的有力工具. 本文以连续时间信号为例, 介绍利用DFT分析信号频谱的基本流程, 重点阐述频谱分析过程中可能存在的误差, 实例列出MATLAB 环境下频谱分析的实现程序. 1 分析流程 实际信号一般没有解析表达式, 不能直接利用傅里叶分析公式计算频谱, 虽然可以采用数值积分方法进行频谱分析, 但因数据量大、速度慢而无应用价值. DFT在时域和频域均实现了离散化, 适合数值计算且有快速算法, 是利用计算机分析信号频谱的首选工具. 由于DFT要求信号时域离散且数量有限, 如果是时域连续信号则必须先进行时域采样, 即使是离散信号, 如果序列很长或采样点数太多, 计算机存储和DFT计算都很困难, 通常采用加窗方法截取部分数据进行DFT运算. 对于有限长序列, 因其频谱是连续的, DFT只能描述其有限个频点数据, 故存在所谓栅栏效应. 总之, 用DFT分析实际信号的频谱, 其结果必然是近似的. 即使是对所有离散信号进行DFT变换, 也只能用有限个频谱数据近似表示连续频 收稿日期: 2010-06-09 作者简介: 张登奇(1968? ), 男, 湖南临湘人, 硕士, 湖南理工学院信息与通信工程学院副教授. 主要研究方向: 信号与信息处理

用matlab实现两个离散序列的卷积(不使用conv函数)

作业2.用matlab实现离散序列的卷积. N=14; n=[1:N-1]; f=1/16; signal1=5*sin(2*pi*n/8); figure(1); subplot(3,1,1) stem(n,signal1);title( ' 信号1' );xlabel( 'n' );ylabel( axis([0 15 -6 6]) long_M=5; signal2=ones(1,long_M); subplot(3,1,2) stem(signal2);title( ' 信号2' );xlabel( 'n' );ylabel( axis([0 6 -2 2]); grid on; long_N=length(signal1); fk=zeros(0,long_N+long_M+10); if (long_N>long_M) for k=1:1:long_N+long_M-1 a=0; if (k<=long_N) for i=1:1:k if (i>long_M) fk(k)=a; else fk(k)=a+signal2(i)*signal1(k-i+1); a=fk(k); end end else for i=1:1:k if (k-long_N+i>long_M) fk(k)=a; else fk(k)=a+signal2(k-long_N+i)*signal1(long_N-i+1); a=fk(k); end end end end end subplot(3,1,3) stem(fk);title( ' 卷积函数的实现' );xlabel( 'n' );ylabel( 'y(n)' ); 'y(n)' ); 幅度' );

基于Matlab实现线性卷积等

线性卷积与循环卷积 一、作品目的 通过matlab的强大功能展示线性卷积和循环卷积过程中方方面面的计算和变化,让大家对这两种卷积有一个更加完美的认识。 二、概念简介 卷积是一种典型的乘累加运算。 1.线性卷积 线性卷积是对线性移不变(LSI)系统的输入输出关系的描述,体现系统的特性。 线性卷积的表达式为 一般情况,现实的系统为因果系统,有k<0时,恒有h(k)=0,则 若x(n)是一个N点序列,h(n)是一个m点序列,则卷积的结果y(n)将是L=N+M-1点的序列。 2.循环卷积

设x1(n) 和x2(n) 是两个长度为L、M的有限长序列,它们的N 点循环卷积x3(n) 定义为: 注意:其中N>=Max{L,M}如果其中一个序列(或者两个序列)的长度没有所求N点循环卷积的长度长,那在该序列后面补零,直到长度达到N。 三、设计思路及程序 1. 线性卷积: (1)以输入序列x(n)=[5,4,3,2,1],脉冲响应h(n)=[1,1,1,1]为列进行演示。 (2)计算输入序列和脉冲响应的长度。 (3)画出补零后的输入序列和脉冲响应 (4)设计一个循环,在循环中实现反转、位移和计算。并画出反转后的图像变化和卷积图像,将每一次移位结果保存为fig图。(5)最后将上一步所生成的所有fig图合起来生成一张gif图 程序展示: clear; clc; close all; (1)(2)

xn=[5,4,3,2,1]; M=length(xn);%输入任意序列并计算长度M hn=[1,1,1,1]; N=length(hn);%输入任意脉冲响应并计算长度N m=[-(M-1):M+N-2];%设置代换变量的范围以便x(m)翻转和移位(3) xm=[zeros(1,M-1),xn,zeros(1,N-1)];%补零以便与m对应绘图 subplot(2,2,1);stem(m,xm,'r.');%%绘输入序列x(m) ylabel('x(m)'); grid on; title('(a)输入序列x(m)'); hm=[zeros(1,M-1),hn,zeros(1,M-1)];%补零以便与m对应绘图 subplot(2,2,2);stem(m,hm,'r.');%绘脉冲响应 ylabel('h(m)'),grid,title('(b)脉冲响应h(m)');%%加标签网格和标题 yn=zeros(1,2*M+N-2);%卷积输出初始化 (4) for n=0:M+N-2;%逐个计算卷积输出 if n==0; xmfy=[fliplr(xn),zeros(1,M+N-2)];%实现翻转 else for k=M:-1:1;

基于matlab的信号分析与处理

基于m a t l a b的信号分 析与处理 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

山东建筑大学 课程设计说明书题目:基于MATLAB的信号分析与处理课程:数字信号处理课程设计 院(部):信息与电气工程学院 专业:通信工程 班级:通信111班 学生姓名: 学号: 指导教师: 完成日期: 2014年1月

目录4

摘要 这次是基于MATLAB的信号分析与处理。所谓数字滤波器,就是输入、输出都是数字信号的,通过数值计算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。常用的经典滤波器有低通、高通、带通、带阻。 首先产生一个连续信号,包含低频、中频、高频分量;对其进行采样,得到数字信号;对数字信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通、低通、带通滤波器,绘制滤波器的幅频及相频特性;用所设计的滤波器对信号滤波,并绘制出滤波后的频谱图。 关键词:MATLAB; FFT;滤波器;信号产生;频谱分析

1设计目的和要求 产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 2设计原理 信号的采样要符合奈奎斯特采样定律,一般为被采信号最高频率的2倍,只有这样,才能保证频域不混叠,也就是采样出来数字信号中包含了被采信号的所有信息,而且没有引入干扰。这就是信号的时域采样。 频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。 IIR滤波器的设计原理: IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。 IIR数字滤波器的设计步骤: (1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; (2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器; (3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; (4)如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。 本课程设计设计思想:首先利用MATLAB分别产生低频、中频、高频信号,然后进行叠加得到连续时间信号;对所产生的连续时间信号进行采样,得到数字信号;对信

离散时间信号表与运算

离散时间信号表与运算

————————————————————————————————作者:————————————————————————————————日期:

实验一 离散时间信号的表示与运算 一 实验目的 1、熟悉MATLAB 的绘图函数; 2、掌握单位取样序列、单位阶跃序列、矩形序列和正余弦序列的产生方法; 3、掌握离散时间信号基本运算的MATLAB 实现; 4、掌握离散时间信号线性卷积和运算的MATLAB 实现。 二 实验设备 1、计算机 2、MA TLAB R2007a 仿真软件 三 实验原理 1)序列相加和相乘 设有序列)(1n x 和)(2n x ,它们相加和相乘如下: ) ()()()()()(2121n x n x n x n x n x n x ?=+= 注意,序列相加(相乘)是对应序列值之间的相加(相乘),因此参加运算的两个序列必须具有相同的长度,并且保证位置相对应。如果不相同,在运算前应采用zeros 函数将序列左右补零使其长度相等并且位置相对应。在MATLAB 中,设序列用x1和x2表示,序列相加的语句为:x=x1+x2;然而要注意,序列相乘不能直接用x=x1*x2,该式表示两个矩阵的相乘,而不是对应项的相乘。对应项之间相乘的实现形式是点乘“.*”,实现语句为:x=x1.*x2。 2)序列翻转 设有序列:)()(n x n y -=,在翻转运算中,序列的每个值以n=0为中心进行翻转,需要注意的是翻转过程中序列的样值向量翻转的同时,位置向量翻转并取反。MATLAB 中,翻转运算用fliplr 函数实现。设序列)(n x 用样值向量x 和位置向量nx 表述,翻转后的序列 )(n y 用样值向量y 和位置向量ny 描述。 3)序列的移位 移位序列)(n x 的移位序列可表示为:)()(0n n x n y -=,其中,00>n 时代表序列右移 0n 个单位;00

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三 用FFT 对信号进行频谱分析 一 实验目的 1 能够熟练掌握快速离散傅立叶变换的原理及应用FFT 进行频谱分析的基本方法; 2了解用FFT 进行频谱分析可能出现的分析误差及其原因; 二 实验原理 1.用DFT 对非周期序列进行谱分析 单位圆上的Z 变换就是序列的傅里叶变换,即 ()()j j z e X e X z ωω== (3-1) ()j X e ω是ω的连续周期函数。对序列()x n 进行N 点DFT 得到()X k ,则()X k 是在区间[]0,2π上对()j X e ω的N 点等间隔采样,频谱分辨率就是采样间隔 2N π。因此序列的傅里叶变换可利用DFT (即FFT )来计算。 用FFT 对序列进行谱分析的误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而非周期序列的频谱是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱,因此N 要适当选择大一些。 2.用DFT 对周期序列进行谱分析 已知周期为N 的离散序列)(n x ,它的离散傅里叶级数DFS 分别由式(3-2)和(3-3) 给出: DFS : ∑-=-=1 2)(1N n kn N j k e n x N a π , n =0,1,2,…,N -1 (3-2) IDFS : ∑-==1 02)(N k kn N j k e a n x π , n =0,1,2,…,N -1 (3-3) 对于长度为N 的有限长序列x (n )的DFT 对表达式分别由式(3-4)和(3-5)给出: DFT : ∑-=-=1 02)()(N n kn N j e n x k X π , n =0,1,2,…,N -1 (3-4) IDFT : ∑-==1 02)(1)(N k kn N j e k X N n x π , n =0,1,2,…,N -1 (3-5) FFT 为离散傅里叶变换DFT 的快速算法,对于周期为N 的离散序列x (n )的频谱分析便可由式(3-6)和(3-7)给出:

卷积码matlab程序

卷积编码程序: function [output, len_tal] = cnv_encd(secrettext, encodetext) g = [0 0 1 0 0 1 0 0; 0 0 0 0 0 0 0 1; 1 0 0 0 0 0 0 1; 0 1 0 0 1 1 0 1]; k0 = 1; % 读入文本文件并计算文件长度 frr = fopen(secrettext, 'r'); [msg, len] = fread(frr, 'ubit1'); msg = msg'; % check to see if extra zero padding is necessary if rem(length(msg), k0) > 0 msg = [msg, zeros(size(1:k0-rem(length(msg),k0)))]; end n = length(msg)/k0; % 把输入比特按k0分组,n为所得的组数。 % check the size of matrix g if rem(size(g, 2), k0) > 0 error('Error, g is not of the right size.'); end % determine L and n0 L = size(g, 2)/k0; n0 = size(g, 1); % add extra zeros,以保证编码器是从全0开始,并回到全0状态。 u = [zeros(size(1:(L-1)*k0)), msg, zeros(size(1:(L-1)*k0))]; % generate uu, a matrix whose columns are the contents of conv. encoder at % various clock cycles. u1 = u(L*k0: -1 :1); for i = 1:n+L-2 u1 = [u1, u((i+L)*k0:-1:i*k0+1)]; end uu = reshape(u1, L*k0, n+L-1); % determine the output output = reshape(rem(g*uu, 2), 1, n0*(L+n-1)); len_tal = n0*(L + n - 1);

信号与系统卷积介绍

卷积积分与卷积 一、摘要: 近十年来,由于电子技术和集成电路工艺的飞速发展,电子计算机已为信号的处理提供了条件。信号与系统分析理论应用一直在扩大,它不仅应用于通信、雷达、自动控制、光学、生物电子学、地震勘探等多种领域,而且对社会和自然学科也具有重要的指导意义。 卷积运算是线性时不变系统的一个重要工具,随着信号与系统理论研究的深入,卷积运算得到了更广泛的应用。卷积运算有很多种解法,对于一般无限区间而言,可用定义法直接求解。而本文通过图解法、卷积性质法、简易算法对有限区间卷积积分和卷积和分别进行求解,最后进行了相关的比较。 二、关键词: 信号与系统;卷积;图解法;卷积性质法;简易算法 三、正文: 卷积在信号与系统理论分析中,应用于零状态响应的求解。对连续时间信号 的卷积称为卷积积分,定义式为: ∞ f t=f1τf2t?τdτ ?f1(t)?f2(t) ?∞ 对离散时间信号的卷积称为卷积和,定义式为: ∞ f n=f1m f2n?m ?f1(n)?f2(n) m=?∞ 1、卷积积分的解法 (1)图解法 图解法适合于参与卷积运算的两函数仅以波形形式给出,或者已知函数的波形易于画出的情况。利用图解法能够直接观察到许多抽象关系的具体情况,而且容易确定卷积积分的上、下限,是一种极有效的方法。

如果给定f 1 t 和f 2(t ),要求这两个函数的卷积积分f t =f 1(t )?f 2(t ),首先要改变自变量,即将f 1 t 和f 2(t )变成f 1 τ 和f 2(τ),这时函数图形与原来一样,只是横坐标变为了t ,然后再经过以下四个步骤: (1)反褶,即将f 2(τ)进行反褶,变为f 2(?τ); (2)时移,即将f 2(?τ)时移t ,变为f 2 t ?τ =f 2[?(τ?t )],当t >0时,将f 2(?τ)右移t ,而当t <0时,将f 2(?τ)左移t ; (3)相乘,即将f 1 t 与f 2 t ?τ 相乘得到f 1 t f 2 t ?τ ; (4)积分,即将乘积f 1 t f 2 t ?τ 进行积分,积分的关键是确定积分限。一般是将f 1 t f 2 t ?τ 不等于零的区间作为上下限,而当取不同的值时,不为零的区间有所变化,因此要分成不同的区间来求卷积。 例1、已知f 1 t 和f 2(t )的波形如图1-1所示,求f t =f 1(t )?f 2(t )。 图1-1 解:(1)变量代换,将变量f 1 t 和f 2(t )变成f 1 τ 和f 2(τ),此时波形不变; (2)将f 2(τ)进行反褶,变为f 2(?τ),图1-2; (3)时移,即将f 2(?τ)时移t ,图1-3; (4)相乘,即将f 1 t 与f 2 t ?τ 相乘得到f 1 t f 2 t ?τ ,图1-4~8; 图 1-3 图1-2 [τ] [τ]

MATLAB实现卷积码编译码-

本科生毕业论文(设计) 题目:MATLAB实现卷积码编译码 专业代码: 作者姓名: 学号: 单位: 指导教师: 年月日

目录 前言----------------------------------------------------- 1 1. 纠错码基本理论---------------------------------------- 2 1.1纠错码基本理论 ----------------------------------------------- 2 1.1.1纠错码概念 ------------------------------------------------- 2 1.1.2基本原理和性能参数 ----------------------------------------- 2 1.2几种常用的纠错码 --------------------------------------------- 6 2. 卷积码的基本理论-------------------------------------- 8 2.1卷积码介绍 --------------------------------------------------- 8 2.1.1卷积码的差错控制原理----------------------------------- 8 2.2卷积码编码原理 ---------------------------------------------- 10 2.2.1卷积码解析表示法-------------------------------------- 10 2.2.2卷积码图形表示法-------------------------------------- 11 2.3卷积码译码原理---------------------------------------------- 15 2.3.1卷积码三种译码方式------------------------------------ 15 2.3.2V ITERBI译码原理---------------------------------------- 16 3. 卷积码编译码及MATLAB仿真---------------------------- 18 3.1M ATLAB概述-------------------------------------------------- 18 3.1.1M ATLAB的特点------------------------------------------ 19 3.1.2M ATLAB工具箱和内容------------------------------------ 19 3.2卷积码编码及仿真 -------------------------------------------- 20 3.2.1编码程序 ---------------------------------------------- 20 3.3信道传输过程仿真-------------------------------------------- 21 3.4维特比译码程序及仿真 ---------------------------------------- 22 3.4.1维特比译码算法解析------------------------------------ 23 3.4.2V ITERBI译码程序--------------------------------------- 25 3.4.3 VITERBI译码MATLAB仿真----------------------------------- 28 3.4.4信噪比对卷积码译码性能的影响 -------------------------- 28

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

数字信号处理课程设计报告书 2011年7 月 1日 课题名称 应用MATLAB 对信号进行频谱分析 姓 名 张炜玮 学 号 20086377 院、系、部 电气系 专 业 电子信息工程 指导教师 刘鑫淼 ※※※※※※※※※ ※※ ※※ ※※ ※※ ※※※※※ ※※ 2008级数字信号处理课程设计

应用MATLAB对信号进行频谱分析 20086377 张炜玮 一、设计目的 用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。 二、设计要求 1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图; 2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明; 3、绘制三种信号的均方根图谱; 4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。 三、系统原理 用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行频谱分析的信号是模拟信号和时域离散信号。频谱分辨率直接和FFT的变换区间N 有关,因为FFT能够实现频率分辨率是2π/N。 x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为: X(k)=DFT[x(n)]= kn N W N n n x ∑ - = 1 ) ( ,k=0,1,...,N-1 N j e N Wπ2- = 逆变换:x(n) =IDFT[X(k)]= kn N W k X N n N - ∑ - = 1 ) ( 1 ,k=0,1,...,N-1 但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。本实验就是采用FFT,IFFT对信号进行谱分析。 四、程序设计 fs=input('please input the fs:');%设定采样频率 N=input('please input the N:');%设定数据长度 t=0:0.001:1; f=100;%设定正弦信号频率 %生成正弦信号 x=sin(2*pi*f*t);

离散时间信号的产生及信号的卷积和运算实验报告2

离散时间信号的产生及信号的卷积和运算 实验报告 班级:___________ 姓名:__________ 学号:____________ 一、实验目的和原理 实验原理: (一)DTFT 和DFT 的定义及其相互关系: 序列x[n] 的DTFT 定义:∑=∞ -∞ =-n jn ωj ω x[n]e )X(e 它是关于自变量ω的复函数,且是以π2为周期的连续函数。)X(e j ω 可以表示为: )(e jX )(e X )X(e j ωim j ωre j ω+= 其中,)(e X j ω re 和)(e X j ωim 分别是)X(e j ω的实部和虚部;还可以表示为: )(ωj j ωj ωe )X(e )X(e θ= 其中,)X(e j ω 和}arg{)()X(e j ω=ωθ分别是)X(e j ω的幅度函数和相位函数; 它们都是ω的实函数,也是以π2为周期的周期函数。 序列x[n]的N 点DFT 定义: ∑∑-=-=-===10 1 22][][)(][N n kn N N n kn N j k N j W n x e n x e X k X ππ ][k X 是周期为N 的序列。 )X(e j ω与][k X 的关系:][k X 是对)X(e j ω在一个周期中的谱的等间隔N 点采样,即: k N j ω)X(e k X πω2| ][= =, 而)X(e j ω 可以通过对][k X 内插获得,即:

]2/)1)][(/2([1 ) 22sin() 22sin( ] [1----=?--= ∑N N k j N k j ω e N k N k N k X N )X(e πωπωπω (二) 线性时不变离散时间系统的变换域表示: LTI 离散时间系统的时域差分方程为: ∑∑==-=-M k k N k k k n x p k n y d )()( (1) 传递函数: 对上面的差分方程两边求z 变换,得: ∑∑∑∑=-=-=-=-=? =N k k k M k k k M k k k N k k k z d z p z X z Y z p z X z d z Y 0 00 ) () ()()( 我们定义LTI 离散时间系统的输出的Z 变换Y(z)与输入的Z 变换X(z)的比值为该系统的传递函数,即) () ()(z X z Y z H = 为系统的传递函数。 N N M M z d z d d z p z p p z D z p z H ----++++++= =......)()()(110110 分解因式 ∏-∏-=∑∑= =-=-=-=-N i i M i i N i i k M i i k z z K z d z p z H 11 11 0)1()1()(λξ ,其中i ξ和i λ称为零、极点。 利用系统的传递函数)(z H ,我们可以分析系统的零极点,稳定性及实现结构等特点。 (2) 频率响应: 因为大多数离散时间信号都可以分解为n j e ω的线性组合,所以研究输入n j e ω-的响应具有极大的意义,即当输入为n j e n x ω=][时,输出为: )()()(][) (ωωωωωj n j m m j n j m n j m e H e e m h e e m h n y === ∑∑∞ -∞ =--∞ -∞ = 这里,∑∞-∞ =-= n n j j e n h e H ωω )()(是h(n)的DTFT ,称为LTI 离散时间系统的频率

相关文档
最新文档