用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu如何更新_ubuntu更新软件包列表命令

    ubuntu如何更新_ubuntu更新软件包列表命令ubuntu怎么更新?ubuntu更新命令及方法安装Ubuntu系统后,第一件事就是更新系统源。由于系统安装的默认源地址在英国,作为Ubuntu的主源,国内连接速度非常慢,所以我们要将它换成就近的

    2022年8月2日
    15
  • Linux#使用ll命令

    Linux#使用ll命令     ubuntu和mac环境下,没有ll命令,对于习惯在Linux环境使用ll命令的开发人员来说,着实不便。     介绍两种添加ll命令的方法:     一、设置别名        1、编辑~/.bashrc mac环境为~./bash_profile             sudovim~/.bash_profile        2、…

    2022年9月16日
    3
  • 命名规范与规则

    命名规范与规则命名规范1、项目名全部小写,就是如果项目名是多个英语单词组成的,每个单词都要全部小写。如:doubanssm。2、包名全部小写。3、类名首字母大写,若类名由多个单词构成,每个单词首字母大写,即

    2022年7月1日
    32
  • 智能避障小车_单片机智能小车程序

    智能避障小车_单片机智能小车程序      接下来我对所用的模块以及小车的硬件部分做一个讲解        小车的总体效果图如下:      首先是模块简介:            1、首先就是L298N,这是一个经典的电机驱动,相信基本所有玩过单片机,玩过电机的人都使用过,它可以最高容忍15v电压输入,逻辑电平2.4-5.5v,所以使用单片机的3.3v完全可以驱动,它并没有PWM接口来控制电机的速度,只能使逻辑电平输出…

    2022年10月17日
    2
  • WebService客户端几种实现方式

    WebService客户端几种实现方式1。发布一个webservice服务。2。jdk原生调用方式和import生成代码3。cxf两种调用方式。4。axis和axis2调用方式5。httpClient调用方式。httpclient4.5.2httpmime4.5.2

    2022年7月13日
    15
  • python闭包详解_python闭包主要解决什么问题

    python闭包详解_python闭包主要解决什么问题闭包首先了解一下:如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数。在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用

    2022年7月28日
    4

发表回复

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

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