信号与系统-离散序列的绘制与卷积(matlab实现)-一个作业的记录

这篇具有很好参考价值的文章主要介绍了信号与系统-离散序列的绘制与卷积(matlab实现)-一个作业的记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验内容

matlab 离散序列卷积,现代信号处理基础实验作业记录册,matlab,人工智能

二、实验目的

  1. 熟练知晓离散序列的表示方法并能利用matlab绘制出离散序列的图像
  2. 掌握离散序列的基本运算(如加法、乘法、平移、反褶等)并能成功编写对应matlab函数
  3. 掌握有限离散序列的卷积运算并能够利用matlab编写卷积函数

三、实验原理

题目一

首先表示出离散信号x(n),对于y(n)可将其拆解为两个信号0.2x(5-n)和0.3x(n)x(n-3)相加,然后分别表示出这两个分量,进行相加。

对于x(5-n),首先可以利用翻转函数实现信号的翻转得到x(-n),x(5-n)也即x(-(n-5)),x(-n)图像上方向右平移5个单位得到,可通过将坐标轴向左平移5

个单位达到即让n变为n+5。

得到x(n-3)的方式可类比x(5-n),对x(n)与x(n-3)相乘即可得到第二个分量。

题目二

手写卷积函数的实现,我采用的是对位相乘相加法。

对位相乘相加法原理:

首先将两序列排成两行,其将其各自n最大的序列值对齐(即按右端对齐),然后作乘法运算,但是不要进位,最后将同一列的乘积值相加即得到卷积和结果。

当利用程序实现时,考虑用矩阵存储每一位的乘积,最后进行矩阵的列求和。由于卷积的最终序列长度为length(x)+length(h)-1,所以将此作为矩阵的列数,由对位相乘相加法原理知,矩阵的每一行为分别为h(n)的每一位与x(n)所有相乘的结果,因此矩阵的行数为length(h)。

四、实验结果与分析

(一)离散序列的表示即图像绘制

(1)代码 

离散序列图像绘制脚本(Discrete_Signal.m)

clear

n=-2:10;

x=[1:7,6:-1:1];

[x1,n1]=sigfliplr(x,n);

x1=0.2*x1;

[x2,n2]=sigmult(x,n,x,n+3);

x2=0.3*x2;

[y,n]=sigadd(x1,n1+5,x2,n2);

figure

stem(n,y);

title('y(n)');

以下为上述代码中使用的函数的代码:

信号翻转(sigfiplr,m)

function [y,n]=sigfliplr(x,m)

y=fliplr(x);

n=-fliplr(m);

end

信号相乘   (sigmult.m)

function [y,n]=sigmult(x1,n1,x2,n2)

n=min(min(n1),min(n2)):max(max(n1),max(n2));

y1=zeros(1,length(n));

y2=y1;

y1(find(n>=min(n1)&n<=max(n1)))=x1;

y2(find(n>=min(n2)&n<=max(n2)))=x2;

y=y1.*y2;

End

信号相加(sigadd.m)

function [y,n]=sigadd(x1,n1,x2,n2)

n=min(min(n1),min(n2)):max(max(n1),max(n2));

y1=zeros(1,length(n));

y2=y1;

y1(find((n>=min(n1))&(n<=max(n1)==1)))=x1;

y2(find((n>=min(n2))&(n<=max(n2)==1)))=x2;

y=y1+y2;

end         

          

(2)结果

matlab 离散序列卷积,现代信号处理基础实验作业记录册,matlab,人工智能

(二)卷积函数的编写与验证

(1)代码

卷积函数my_conv:

function [y,ny]=my_conv(x,nx,h,nh)

nyb=nx(1)+nh(1);

nye=nx(length(x))+nh(length(h));

ny=nyb:nye;

ly=length(ny);

A=zeros(length(h),ly);

for i=1:length(h)

for j=i:length(x)+i-1

A(i,j)=h(1,i).*x(1,j-i+1);

end

end

y=sum(A,1);

end

验证(Conv_verify):

clear

nx=0:6;

nh=-3:4;

x=0.5*nx.*(stepseq(0,0,6)-stepseq(6,0,6));

figure

stem(nx,x);

title('x(n)');

h=2*sin(0.5*nh*pi).*(stepseq(-3,-3,4)-stepseq(4,-3,4));

figure

stem(nh,h);

title('h(n)');

[y,ny]=my_conv(x,nx,h,nh);

figure

stem(ny,y);

title('y(n)-myconv');

[yc,nyc]=conv_m(x,nx,h,nh);

figure

stem(nyc,yc);

title('y(n)-standard');

其中,验证使用matlab自带的卷积函数进行对照,此函数包含在conv_m中,如下:

function [y,ny]=conv_m(x,nx,h,nh)

nyb=nx(1)+nh(1);

nye=nx(length(x))+nh(length(h));

ny=[nyb:nye];

y=conv(x,h);

end

(2)结果

X(n)的图像matlab 离散序列卷积,现代信号处理基础实验作业记录册,matlab,人工智能

 h(n)的图像matlab 离散序列卷积,现代信号处理基础实验作业记录册,matlab,人工智能

自己编写的卷积函数绘制的y(n)图像

matlab 离散序列卷积,现代信号处理基础实验作业记录册,matlab,人工智能采用标准卷积函数绘制的y(n)图像

matlab 离散序列卷积,现代信号处理基础实验作业记录册,matlab,人工智能

五、总结(实验中遇到的问题、取得的经验、感想等)

此处略文章来源地址https://www.toymoban.com/news/detail-729453.html

到了这里,关于信号与系统-离散序列的绘制与卷积(matlab实现)-一个作业的记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 时序预测 | MATLAB实现CNN-BiGRU卷积双向门控循环单元时间序列预测

    预测效果 基本介绍 1.MATLAB实现CNN-BiGRU卷积双向门控循环单元时间序列预测; 2.运行环境为Matlab2021b; 3.单个变量时间序列预测; 4.data为数据集,单个变量excel数据,MainCNN_BiGRUTS.m为主程序,运行即可,所有文件放在一个文件夹; 5.命令窗口输出R2、MSE、RMSE、MAE、MAPE多指标评价;

    2024年02月10日
    浏览(47)
  • 时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测

    预测效果 基本介绍 1.MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测; 2.运行环境为Matlab2021b; 3.单变量时间序列预测; 4.data为数据集,excel数据,单变量时间序列,MainTCN_GRUTS.m为主程序,运行即可,所有文件放在一个文件夹; 5.命令窗口输出R2、MSE、RMSE、MAE、MAPE多指标评

    2024年02月09日
    浏览(46)
  • 时序分解 | Matlab实现CEEMD互补集合经验模态分解时间序列信号分解

    效果一览 基本介绍 Matlab实现CEEMD互补集合经验模态分解时间序列信号分解 1.分解效果图 ,效果如图所示,可完全满足您的需求~ 2.直接替换txt数据即可用 适合新手小白 注释清晰~ 3.附赠案例数据 直接运行main一键出图~ 程序设计 完整源码和数据获取方式:Matlab实现CEEMD互补

    2024年02月08日
    浏览(54)
  • 时序分解 | Matlab实现FEEMD快速集合经验模态分解时间序列信号分解

    效果一览 基本介绍 Matlab实现FEEMD快速集合经验模态分解时间序列信号分解 算法新颖小众,用的人很少,包含分解图,效果如图所示,适合作为创❤️~ 程序设计 完整源码和数据获取方式:私信回复 Matlab实现FEEMD快速集合经验模态分解时间序列信号分解 。 参考资料 [1] http

    2024年02月05日
    浏览(57)
  • 时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测

    预测效果 基本介绍 1.MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测; 2.运行环境为Matlab2021b; 3.单变量时间序列预测; 4.data为数据集,excel数据,单变量时间序列,MainTCN_BiGRUTS.m为主程序,运行即可,所有文件放在一个文件夹; 5.命令窗口输出R2、MSE、RMSE、MAE、MAP

    2024年02月10日
    浏览(46)
  • 时序预测 | MATLAB实现基于CNN卷积神经网络的时间序列预测-递归预测未来(多指标评价)

    预测结果 基本介绍 1.Matlab实现CNN卷积神经网络时间序列预测未来; 2.运行环境Matlab2018及以上,data为数据集,单变量时间序列预测; 3.递归预测未来数据,可以控制预测未来大小的数目,适合循环性、周期性数据预测; 4.命令窗口输出R2、MAE、MAPE、MBE、MSE等评价指标。 运行环

    2024年02月13日
    浏览(43)
  • 用MATLAB计算序列的离散傅里叶变换

    MATLAB提供了用快速算法计算离散傅里叶变换的函数fft,其调用格式为: 其中, 调用参数xn为时域序列向量 , N为离散傅里叶变换区间长度。 当N大于xn的长度时,fft函数自动在xn后面补零,返回xn的N点离散傅里叶变换结果向量Xk。 当N小于xn的长度时,fft函数计算xn的前N个点构成

    2023年04月16日
    浏览(42)
  • 实验三 基于MATLAB的离散时间信号的频域分析

    1.掌握离散时间信号和系统的频域分析方法; 2.学会利用MATLAB函数对离散时间信号和系统的频域进行计算。 1.离散时间傅里叶变换(DTFT) 通常是实变量Ω的复函数。实例程序演示如下: 【例3.1】求有限长序列的DTFT,并画出它的幅度谱,相位谱,实部和虚部。 其程序运行结果

    2024年02月05日
    浏览(37)
  • 时序预测 | Matlab实现CNN-XGBoost卷积神经网络结合极限梯度提升树时间序列预测

    效果一览 基本描述 时序预测 | Matlab实现CNN-XGBoost卷积神经网络结合极限梯度提升树时间序列预测。 Matlab实现CNN-XGBoost卷积神经网络结合极限梯度提升树时间序列预测(完整源码和数据) 1.data为数据集,单变量时间序列数据集。 2.CNN_XGBoostTS.m为主程序文件,其他为函数文件,

    2024年02月10日
    浏览(52)
  • 时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测

    预测效果 基本介绍 1.MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测; 2.运行环境为Matlab2021b; 3.单变量时间序列预测; 4.data为数据集,excel数据,MainTCN_LSTMTS.m为主程序,运行即可,所有文件放在一个文件夹; 5.命令窗口输出RMSE、MAE、MAPE多指标评价。 模型描述 由

    2024年02月09日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包