最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 【知识点】卷积运算,傅里叶变换及采样定理的证明

    本实验涉及基本的离散时间信号生成、卷积运算、傅里叶变换和采样定理证明。点击这里下载所有程序和实验报告

    目录

    实验原理1、序列的概念

    Sequence是本实验要研究的离散信号的简称。时域中的连续信号具有对应于其定义域中的每个时间的值。对连续信号进行采样,每间隔T取一个幅度值,从而得到一个不连续点,仅在这些采样点有值的信号就是离散时间信号。

    常用的序列有单位脉冲序列(单位采样序列)、单位步进序列、矩形序列等。

    2、卷积运算

    对序列的常见操作包括移位、反向卷积、求和、乘积、标量乘法、累加和差分操作。

    这些基本操作可用于执行序列之间的卷积操作。卷积计算公式如下:

    上式的运算关系称为卷积运算门函数信号傅立叶变换 c语言,其中*表示两个顺序的卷积运算。两个序列的卷积是一个序列和另一个序列在反卷积后的连续移位积之和,所以称为离散卷积,也称为两个序列的线性卷积。计算过程包括以下四个步骤。

    (1)反向折叠:先把x(n)和h(n)的变量n换成m变成x(m)和h(m),再把h(m)换成竖直轴是对称轴,折叠成h(-m)。

    (2)Shift:将h(-m)移位n得到h(n-m)。这里注意n的正负值来判断移位的方向。

    (3)乘法:将h(n-m)和x(m)对应的点值相乘。

    (4)求和:将上面所有对应点的乘积相加得到y(n)。

    实验任务和方法1、离散信号生成

    在这里插入图片描述

    2、序列操作

    在这里插入图片描述

    3、采样定理

    使用matlab绘制频谱图主要分为以下几个步骤:

    确定时域信号;确定采样频率的采样点个数,将采样点除以采样频率得到采样部分的时间。采样频率的选择需要满足采样定理门函数信号傅立叶变换 c语言,采样点的个数由采样的时间决定。使用fft函数对信号进行快速傅里叶变换;使用abs函数得到傅里叶变换后的幅值;根据时域信号的采样频率、点数、时间序列得到频率序列。使用 plot 函数绘制幅值随频率变化的图形。

    以绘制x(t)=sin(t)的谱为例来研究采样定理。根据采样定理,fs≥2f,fs应大于等于1/π

    过程和结果 1 离散时间信号(序列)的生成

    在这里插入图片描述

    1.1 常用序列的绘制

    绘制单位脉冲序列、单位步进序列、矩形序列。

    我编写了三个函数来生成这三个函数中的每一个。

    function x = impseq(n0,n)  %冲激信号函数
    x = [(n-n0)==0];
    function [x] = stepseq(n0,n)  %阶跃
    x = [(n-n0)>=0];
    function [x] = rectseq(n0,n,N)     %矩形
    x = [(n-n0)>=0&((n0+N-1)-n)>=0];
    

    figure('name','几种常用序列');
    n=[-20:20];
    x1=impseq(0,n);
    subplot(311);
    stem(n,x1);
    title('单位脉冲序列');
    x2=stepseq(0,n);
    subplot(312);
    stem(n,x2);
    title('单位阶跃序列');
    

    傅里叶红外变换光谱_门函数信号傅立叶变换 c语言_c语言清屏函数使用函数

    x3=rectseq(0,n,5); subplot(313); stem(n,x3); title('矩形序列');

    结果如图

    在这里插入图片描述

    1.2正弦信号及其相关信号图

    由于matlab内置了正弦函数和指数函数,所以绘制正弦相关函数比较容易。定义好t值后,输入几种正弦信号、正弦衰减信号和谐波信号函数公式,使用stem函数或plot函数即可绘制其图像

    t=-10:0.15:10;
    x4=2*sin(pi/5*t+pi/3);
    x5=2*cos(t-pi/3);
    x6=2*sin(3*t).*cos(2*t-pi/3);
    figure('name','三角函数');   %三个正余弦函数
    subplot(2,2,1);
    plot(t,x4,'-r*',t,x5,'-g*',t,x6,'-b*');
    legend('2*sin(pi/5*t+pi/3)','2*cos(t-pi/3)','2*sin(3*t).*cos(2*t-pi/3)');
    subplot(2,2,2);
    stem(t,x4);
    xlabel('2*sin(pi/5*t+pi/3)');
    subplot(2,2,3);
    stem(t,x5);
    xlabel('2*cos(t-pi/3)');
    subplot(2,2,4);
    stem(t,x6);
    xlabel('2*sin(3*t).*cos(2*t-pi/3)');
    figure('name','正弦衰减')    %正弦衰减信号
    t=-20:0.1:10;
    x7=2*exp(-0.5*t).*sin(2*pi*2*t);
    subplot(211);
    stem(t,x7);
    subplot(212);
    plot(t,x7);
    figure('name','谐波信号')   %谐波信号
    t=-5:0.04:5;
    x8=sin(2*pi*2*t)+0.5*sin(2*pi*2*2*t)+0.2*sin(2*pi*3*2*t);
    subplot(211);
    stem(t,x8);
    subplot(212);
    plot(t,x8);
    

    结果输出:

    正余弦信号:

    正余弦信号

    正余弦衰减信号:

    在这里插入图片描述

    谐波信号:

    在这里插入图片描述

    2 序列操作

    在这里插入图片描述

    2.1 信号生成和卷积计算

    使用前面的脉冲序列生成函数生成,通过基本运算生成两个信号,使用conv函数进行卷积计算,通过序列长度计算卷积后的序列长度和起始位置。本题申请序列长度应为5+4-1=8,起始位置为0+0=0。

    a=5;          
    n=0:a-1;
    x=impseq(0,n)+2*impseq(1,n)+3*impseq(2,n)+4*impseq(3,n)+5*impseq(4,n);
    b=4;
    n=0:b-1;
    h=impseq(0,n)+2*impseq(1,n)+impseq(2,n)+2*impseq(3,n);
    y = conv(x,h);
    n=0:a+b-1-1;
    stem(n,y);
    

    运行结果:

    在这里插入图片描述

    2.2卷积函数

    对于卷积运算,我们需要获得卷积信号的时间序列和幅度。 matlab自带的conv函数只能获取幅度序列,需要自己计算时间序列。本程序可以画出两个需要卷积的信号图像和卷积后的图像,两个信号可以自己输入。

    function [n,y]=cov2(x1,n1,x2,n2) 
    k1=n1(1)+n2(1);
    k2=length(x1)+length(x2)-2;
    y=conv(x1,x2);          
    n=k1:k1+k2;            
    subplot(311);
    stem(n1,x1);
    subplot(312);
    stem(n2,x2);
    subplot(313);
    stem(n,y);
    x1=input('第一个序列:x(n)=');          
    n1=input('第一个序列长度(如0:10)=');
    x2=input('第二个序列2:h(n)=');
    n2=input('第二个序列长度(如0:10)=');
    [n,y]=cov2(x1,n1,x2,n2);
    stem(n,y);
    

    运行结果:

    在这里插入图片描述

    在这里插入图片描述

    频谱绘制和采样定理

    以绘制x(t)=sin(t)的谱为例来研究采样定理。根据采样定理,fs≥2f,fs应大于等于1/π。绘制采样频率分别为 0.1、1/2π、1/π、1 和 10 的频谱

    t=-4*pi:0.0001:4*pi;
    x=sin(t);
    subplot(611);
    plot(t,x);
    title('原图像');
    fs=0.1;N=64;   
    
    n=0:N-1;t=n/fs;    
    x=sin(t);
    y=fft(x,N);   
    mag=abs(y);      
    f=n*fs/N;     
    subplot(612),plot(f,mag);   
    title('fs=0.1');
    fs=1/(2*pi);N=128;  
    n=0:N-1;t=n/fs;    
    x=sin(t);
    y=fft(x,N);    
    mag=abs(y);      
    f=n*fs/N;     
    subplot(613),plot(f,mag); 
    title('fs=1/2π');
    fs=1/pi;N=256;  
    n=0:N-1;t=n/fs;    
    x=sin(t);
    y=fft(x,N);    
    mag=abs(y);      
    f=n*fs/N;     
    subplot(614),plot(f,mag); 
    title('fs=1/π');
    fs=1;N=256;  
    n=0:N-1;t=n/fs;    
    x=sin(t);
    y=fft(x,N);    
    mag=abs(y);      
    f=n*fs/N;     
    subplot(615),plot(f,mag); 
    title('fs=1');
    fs=10;N=256;  
    n=0:N-1;t=n/fs;    
    x=sin(t);
    y=fft(x,N);    
    mag=abs(y);      
    f=n*fs/N;     
    subplot(616),plot(f,mag);
    title('fs=10');
    

    运行结果:

    在这里插入图片描述

    从图中可以看出,当采样频率小于1/π时,频谱图会有一定程度的失真,而当采样频率等于1/π时,频谱图也会出现失真。这意味着在对正弦信号进行采样时,不能完全按照 2f 进行采样。

    讨论

    本实验利用matlab软件实现了几种常见序列、正弦及其相关序列的生成、计算和绘制,并编写了序列卷积运算程序。最后,通过绘制不同采样频率下的正弦信号 Spectrogram 研究了采样定理,得出正弦信号的采样不能完全按照采样定理进行采样,应根据不同情况进行分析。

    除了本实验生成的集中序列,我们还可以使用matlab中的square函数生成周期性方波信号,使用sawtooth函数生成三角波信号,甚至使用rand函数生成我们研究的随机信号。这也体现了matlab编程在数字信号处理领域相比c编程更简洁方便的优势。 matlab编程语言虽然是基于c编程语言的,但是由于matlab内置函数的存在,很多任务不需要像c编程那样自己写,只需要引用一个函数就可以完成一行代码。此外,它可以用一行程序完成rgb图像和灰度图像的转换,可以使用函数快速完成线性空间滤波,图像增强,并且具有方便的gui用户界面。因此,matlab除了数字信号处理外,还在图像处理、人机交互等领域发挥着重要作用。

    点击这里下载所有程序和实验报告

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 【知识点】卷积运算,傅里叶变换及采样定理的证明

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论