用matlab产生时域离散信号实验报告(有关数字信号处理)

1.正弦序列离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot函数来画出序列的波形。下面就是正弦序列的MATLAB源程序。%正弦序列实现程序k=0:39;fk=sin(pi/6*k);stem(k,fk)2.指数序列离散指数序列的一般形式为,可用MATLAB中的数组幂运算(即点幂运算)c*来实现。下面为用MATLAB编写绘制离散时

大家好,又见面了,我是你们的朋友全栈君。

1.正弦序列

离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot函数来画出序列的波形。下面就是正弦序列的MATLAB源程序。

%正弦序列实现程序k=0:39;fk=sin(pi/6*k);stem(k,fk)

2.指数序列

离散指数序列的一般形式为,可用MATLAB中的数组幂运算(即点幂运算)c*来实现。下面为用MATLAB编写绘制离散时间实指数序列波形的函数。

function dszsu(c,a,k1,k2)%c:指数序列的幅度%a:指数序列的底数%k1:绘制序列的起始序号%k2:绘制序列的终止序号k=k1:k2;x=c*(a.^k);stem(k,x,'filled')hold onplot([k1,k2],[0,0])hold off



利用上述函数,实现实指数波形MATLAB程序如下(其中值分别为)。

%离散时间实指数序列实现程序subplot 221;dszsu(1,5/4,0,20);xlabel('k');title('f1[k]');subplot 222dszsu(1,3/4,0,20);xlabel('k');title('f2[k]');subplot 223;dszsu(1,-5/4,0,20);xlabel('k');title('f3[k]');subplot 224;dszsu(1,-3/4,0,20);xlabel('k');title('f4[k]');



分析程序运行结果,对于离散时间实指数序列,当的绝对值大于1时,序列为随时间发散的序列,当的绝对值小于1时,序列为随时间收敛的序列。同时可见,当的值小于零时,其波形在增长或衰减的同时,还交替地改变序列值的符号。

对于离散时间虚指数序列,可用通过调用下列绘制虚指数序列时域波形的MATLAB函数。

function[]=dxzsu(n1,n2,w)%n1:绘制波形的虚指数序列的起始时间序号%n2:绘制波形的虚指数序列的终止时间序号%w:虚指数序列的角频率k=n1:n2;f=exp(i*w*k);Xr=real(f)Xi=imag(f)Xa=abs(f)Xn=angle(f)subplot(2,2,1), stem(k,Xr,'filled'),title('实部');subplot(2,2,3), stem(k,Xi,'filled'),title('虚部');subplot(2,2,2), stem(k,Xa,'filled'),title('模');subplot(2,2,4), stem(k,Xn,'filled'),title('相角');

利用上述函数,实现虚指数波形MATLAB程序如下(其中虚指数分别为)

%离散时间虚指数实现程序figure(1);dxzsu(0,20,pi/4);figure(2);dxzsu(0,20,2);程序运行结果如图1.21(a)、(b)所示。由图可见,只有当虚指数序列的角频率满足为有理数时,信号的实部和虚部和相角都为周期序列,否则为非周期序列。对于复指数序列,其一般形式为可以通过调用下面绘制复指数序列时域波形的MATLAB函数。function dfzsu(n1,n2,r,w)%n1:绘制波形的虚指数序列的起始时间序号%n2:绘制波形的虚指数序列的终止时间序号%w:虚指数序列的角频率%r: 指数序列的底数k=n1:n2;f=(r*exp(i*w)).^k;Xr=real(f);Xi=imag(f);Xa=abs(f);Xn=angle(f);subplot(2,2,1), stem(k,Xr,'filled'),title('实部');subplot(2,2,3), stem(k,Xi,'filled'),title('虚部');subplot(2,2,2), stem(k,Xa,'filled'),title('模');subplot(2,2,4), stem(k,Xn,'filled'),title('相角');

利用上述函数,实现复指数序列波形MATLAB程序如下。

%复指数序列实现程序(r>1)figure(1);dfzsu(0,20,1.2,pi/4);%复指数序列实现程序(0<r<1)figure(2);dfzsu(0,20,0.8,pi/4);%复指数序列实现程序(r=1)figure(3);dfzsu(0,20,1,pi/4);


当r>1时,复指数序列的实部和虚部分别为幅度按指数增长的正弦序列;当0<r<1时,复指数序列的实部和虚部分别为幅度按指数衰减的正弦序列;当r=1时,复指数序列的实部和虚部分别为等幅正弦序列。

3.单位抽样序列

可以通过借助MATLAB中的零矩阵函数zeros表示。全零矩阵zeros(1,N)产生一个由N个零组成的列向量,对于有限区间的可以通过以下MATLAB程序表示

% 单位抽样序列实现程序k=-30:30;delta=[zeros(1,30),1,zeros(1,30)];stem(k,delta)

4.单位阶跃序列

可以通过借助MATLAB中的单位矩阵函数ones表示。单位矩阵ones(1,N)产生一个由N个1组成的列向量,对于有限区间的可以通过以下MATLAB程序表示

% 单位阶跃序列实现程序k=-30:30;uk=[zeros(1,30),ones(1,31)];stem(k,uk)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127718.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java笔试题大全带答案_java笔试题大全带答案(经典11题)[通俗易懂]

    java笔试题大全带答案_java笔试题大全带答案(经典11题)[通俗易懂]#java笔试题大全带答案(经典11题)**1.不通过构造函数也能创建对象吗()**A.是B.否**分析:答案:A**Java创建对象的几种方式(重要):(1)用new语句创建对象,这是最常见的创建对象的方法。(2)运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。(3)调用对象的clo…

    2022年6月21日
    29
  • Pytest(6)重复运行用例pytest-repeat「建议收藏」

    Pytest(6)重复运行用例pytest-repeat「建议收藏」前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

    2022年7月31日
    9
  • JAVA中Object转String

    JAVA中Object转String1.object.toString()方法这种方法要注意的是object不能为null,否则会报NullPointException,一般别用这种方法。2.String.valueOf(object)方法这种方法不必担心object为null的问题,若为null,会将其转换为”null”字符串,而不是null。这一点要特别注意。”null”和null不是一个概念。3….

    2022年6月12日
    34
  • lseek 出错

    lseek 出错学习windows游戏编程大师时,运行加载位图的函数出错intLoad_Bitmap_File(BITMAP_FILE_PTRbitmap,char*filename) 网上搜的答案 其实这个函数之所以失败是因为你使用的编译器问题,如果你使用vc6就没问题,问题是这样的,像OpenFile,_lseek等这样的函数是16位windows时期的文件操作函数,在vc中它的运

    2022年6月15日
    40
  • ntp服务器 时间(查看服务器时间)

    publicstaticStringgetNTPServerDateTime(StringNTPTimeServerUrl){StringdateTimeMessage;try{NTPUDPClienttimeClient=newNTPUDPClient();InetAddresstimeServerAddress=

    2022年4月12日
    249
  • sap concur报销系统_SAP NetWeaver

    sap concur报销系统_SAP NetWeaver启动orion后,注册用户登录后,默认的地址是localhost:8080/edit/edit.html,这是页面提示了accessdenied,google了很久,有蛮多人遇到此问题,有人说需要把地址该问localhost:8080/webide/index.html,但我修改后还是会报此错误,后面看了有人说需要更新JDK的版本,后面下了JDK8,按装完成后,再启动orion,输入地址ocal…

    2022年9月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号