热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实验一、熟悉MATLAB环境和基本信号的产生与运算

实验一、熟悉MATLAB环境和基本信号的产生与运算一、实验目的二、实验器材三、实验原理1、MATLAB简介(1)

实验一、熟悉MATLAB环境和基本信号的产生与运算

    • 一、实验目的
    • 二、实验器材
    • 三、实验原理
      • 1、 MATLAB简介
        • (1)MATLAB的桌面系统
        • (2)实验中常用的MATLAB函数命令
      • 2.MATLAB中信号的表示-- MATLAB中一般用向量表示信号
        • (1)连续时间信号
        • (2)离散时间信号
      • 3.信号的基本运算
        • (1)信号的加减
        • (2)信号的乘法
    • 四、示例演示
      • 1.基本信号的波形
        • (1)正弦信号
        • (2)抽样信号 抽样信号Sa(t)=sin(t)/t
        • (3) 指数信号
        • (4)单位阶跃信号
        • (5)单位冲激序列
        • (6) 三角信号
        • (7)复指数信号
        • (8) 矩形脉冲信号
      • 2.信号的运算
        • (1)绘出连续序列f(t)=exp[(-0.1+j0.5)t]的实部信号、虚部信号、振幅信号、相位信号。
        • (2)两个序列的加、乘运算
    • 五、实验内容
      • 1.验证实验原理中程序
      • 2.画出信号波形(1) (2)
      • 3.自选二个简单的信号进行加减和乘法运算。
        • (1).用matlab实现f=f1(t)+f2(t)及 f=f1(t).f2(t)
        • (2).用matlab实现![在这里插入图片描述](https://img-blog.csdnimg.cn/20201121222031822.png#pic_center)
        • (3).用matlab实现![在这里插入图片描述](https://img-blog.csdnimg.cn/20201121222134437.png#pic_center)
    • 六、实验报告要求
      • 1.简述实验目的及实验原理。
      • 2.对实验内容编写程序(M文件),绘出运算后信号的波形.
      • 3.写出实验中的体会。

一、实验目的

1.熟悉MATLAB 的运行环境及基本操作命令;
2.掌握MATLAB中信号的表示方法;

二、实验器材

计算机、MATLAB软件

三、实验原理

1、 MATLAB简介

MATLAB语言以矩阵计算为基础,语法规则简单易学,并将高性能的数值计算和可视化结合,且功能强大、丰富的函数工具箱,可扩展性强,深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。

(1)MATLAB的桌面系统

MATLAB既是一种高级计算机语言,又是一个编程环境。MATLAB的桌面系统,由桌面平台、窗口、菜单栏和工具栏组成。启动MATLAB后,界面如图1.1所示。
在图1.1中,最上面有“MATLAB”标题,标题栏的右边从左到右依次为窗口最小化、缩放和关闭按钮。标题栏下是条形主菜单,主菜单下是工具栏按钮与设置当前目录的弹出式菜单框及其右侧的查看目录树的按钮(【Browse for Folder】)。在工具栏下的大窗口就是MATLAB的主窗口,在大窗口里设置4个小窗口(默认设置):“Workspace”是工作空间浏览器窗口,管理工作空间中变量,在运行MATLAB程序时,程序创建的所有变量的主要信息都驻留在工作空间浏览器里,为用户提供了非常方便的查询服务;“Current Directory”路径浏览器窗口,它显示当前路径下的文件;“Command History”历史命令窗口;“Command Windows” 是用户使用MATLAB进行工作的命令窗口,也是实现MATLAB各种功能的主窗口,MATLAB在这里为用户提供了交互式的工作环境,即用户可在这里进行诸如数值计算、符号运算和运算结果的可视化等复杂的分析和处理。
在这里插入图片描述

                                            图1.1 MATLAB桌面系统

比如,在命令窗口的工作区直接输入如下字符:a=eye(4,4)然后按回车键,即可生成一个4×4的单位矩阵,其显示结果如图1.2所示。
在这里插入图片描述

                                          图1.2   程序运行结果

(2)实验中常用的MATLAB函数命令

在整个信号与系统实验过程中,是要利用MATLAB语言来实现信号描述,信号的计算。所以,对MATLAB中的简单常用的函数命令必须有一个好的了解。常用函数命令如下:
function:在MATLAB中不是它的自带函数就可以完成所有功能,更多的时候是自己编写程序来实现所需的功能,这时就要用到此命令,调用格式为:function ***( ) 括号外面为函数名称,括号中为函数中要用到的变量。
plot命令:plot命令是MATLAB中用来绘制用连续信号的波形。它的功能是将向量点用直线依次连接起来。调用格式:plot(f),其中向量f的值为纵坐标的值,相应的元素小标为横坐标的值;plot(t,f),t和f为同维向量,t值为横坐标,f为纵坐标;plot(t1,f1;t2,f2),此命令可以在同一图形下绘出两个信号波形。
title命令:在绘图命令中,可以用此命令来对绘制出来的波形做一些注释。调用格式为:title(‘ …… ’) 中间部分是对图形任意注释的描述。
xlabel、ylabel命令:这两个也是来对绘制出来的波形做标注用的,可以标注出两个坐标轴的未知数的意义,增加图形中的信息量。调用格式:xlabel(‘ …… ’),ylabel(‘ …… ’) 中间可以是对坐标轴做注释的文字或字母。
axis命令:此命令可以来定义绘制波形中坐标的范围。调用格式为:axis([k1,k2,g1,g2]),其中k1,k2表示横坐标的范围,g1,g2表示纵坐标的范围。
stem命令:此命令专门用来绘制离散序列的波形。调用格式为:stem(k,f) 调用此命令可以绘制出离散序列的点状图。
fliplr命令:此函数用来将向量以零时刻为基准点进行反折。调用格式为:f=fliplr(f1) 这样f就是向量f1反折后的函数。
min、max命令:这两个命令可以用来比较算出一个向量中的最小值和最大值,或者比较得出两个值中的较小值。调用格式为:min(k),max(k),min(k1,k2),max(k1,k2)
length命令:此函数可以计算出向量的长度。调用格式为:length(f)。
ones函数:这是MATLAB中一个常用的函数,它产生元素全部为1的矩阵,本文中用此函数来表示离散阶跃序列,或者定义连续的门信号,调用格式为:n=0:5;ones(1,n)表示长度为整数n的阶跃序列。k=1:p:8;ones(1,length(k))表示长度为k的门信号。
subplot命令:在MATLAB绘图过程中,有时候为了便于观测图形的变化,需要在一幅波形显示窗口显示多个信号的波形,这时可以调用subplot命令。调用格式为:subplot(n1,n2,k),表明把一个图形分成了n1
n2块,在第k块上绘制波形。

2.MATLAB中信号的表示-- MATLAB中一般用向量表示信号

(1)连续时间信号

连续时间信号,从严格意义上来讲,MATLAB并不能处理连续信号,而是用连续信号在等时间间隔点的样值近似表示,当取样时间间隔足够小时,离散的样值能较好地近似出连续信号。所以,对于连续时间信号f(t),是用两个行向量f和t来表示,其中向量定义为:t=t1:dt:t1,t1为信号起始时间,t2为终止时间,为时间间隔。向量f为连续信号f(t)在向量所定义的时间点上的样值。比如:连续时间信号f(t)=cos(t),可用MATLAB语言表示为:
t=-5:0.1:5; f=cos(t);
用上述向量对连续信号表示后,可用plot命令其时域波形。命令如下:plot(t,f),则信号的波形如图1.3所示。
在这里插入图片描述

                                                图1.3 的波形

(2)离散时间信号

离散时间信号一般用f(k)表示,变量k为整数,代表离散的采样时间点。利用MATLAB表示离散序列f(k)时,也利用两个向量表示,其中一个向量表示自变量k的取值范围,另一个向量表示序列f(k)的值。
比如序列f(k)={2,2,2,-1,3,0,2;k=-2,-1,0,1,2,3,4}可用MATLAB表示为:
k=-2:4;f=[2,1,2,-1,3,0,2]
此离散时间序列的波形可利用MATLAB函数stem(k,f)画出,如图1.4所示。
在这里插入图片描述

                                            图1.4  f(k)的波形图

3.信号的基本运算

信号的基本运算是指信号的时移、信号的折叠、信号的加、信号的乘等。许多复杂信号就是通过简单信号的基本运算得到的,其中信号的时移、反折和尺度变换在以后的实验介绍。

(1)信号的加减

信号加就是在相同的时间点上将两个或多个信号进行相加。对于连续时间信号,其两个信号的相加可表示为:
y(t)=f1(t)+f2(t)
在MATLAB中,是取连续信号的离散值来进行加的,所以与离散时间信号在MATLAB中的计算方法一样,其MATLAB实现为
y=f1+f2
这两要求f1和f2的长度相同,位置对应,才能进行加法运算,若二者对应变量上的长度不等,则需要根据情况对信号左右补零再进行相加。

(2)信号的乘法

信号的乘就是在相同的时间点上将两个或多个信号进行相乘。两个连续时间信号相乘其数学表达式为
y(t)=f1(t)*f2(t)
对于离散时间信号,其信号f1(k)和f2(k)相乘是指同一时刻两信号的值对用相乘,可表示为
y(k)=f1(k)*f2(k)
其MATLAB实现为 y=f1.*f2
这里也要求两信号的长度必须相等,不等则必须对信号左右补零才能相乘。

四、示例演示

1.基本信号的波形

利用MATLAB软件的信号处理工具箱(Signal Processing Toolbox)中的专用函数产生信号并绘出波形。

(1)正弦信号

正弦信号在MATLAB中用 sin
函数表示。

程序如下:
% Program1.1.m
t=0:0.01:3pi;
y1=sin(2
t);
y2=cos(2*t);
plot(t,y1;t,y2)
其结果如右图所示。
在这里插入图片描述

(2)抽样信号 抽样信号Sa(t)=sin(t)/t

在MATLAB中用 sinc 函数表示。
定义为
% Program1.2.m
t=linspace(-5,5); %t取值的范围
f=sinc(t); %产生sinc函数
plot(t,f)
grid on
在这里插入图片描述

(3) 指数信号

在MATLAB中用exp
函数表示。
% Program1.3.m
t= -2:0.5:2;
y=exp(-t);
plot(t,y); %绘出连续值
hold on;
stem(t,y); %绘出离散值
在这里插入图片描述

(4)单位阶跃信号

% Program1.4.m
t=-10:10;
x=((t-0)>=0);
stem(t,x);
hold on;
plot(t,x,’r’);
在这里插入图片描述

或者在matlab里自编一个函数,以后的实验中用的自编函数是heaviside()
function f=heaviside(t)
f=(t>0);

(5)单位冲激序列

或者单位脉冲序列的表达式:
在这里插入图片描述
延迟ks的单位脉冲序列表达式:在这里插入图片描述

% Program1.5.m
k=-10:10
x=(k0);
t=-10:0.01:10;
x1=(t
0);
stem(k,x); %单位冲激序列
hold on;
plot(t,x1,‘r’) %单位冲激函数在这里插入图片描述

或者在matlab里自编一个函数,自编函数名为jyxl()
function x=jyxl(n)
x=(n>=0)
或者
 %单位脉冲序列m文件
  clear
k0=0; kf=10; ks=3; %本例取ks=3,
k1=k0:kf;
x1=[zeros(1,ks-k0),1,zeros(1,kf-ks)]; %单位脉冲序列的产生
stem(k1,x1,’.’);title(‘单位脉冲序列’)%绘图

(6) 三角信号

三角信号在MATLAB中用 tripuls 函数表示。
调用格式为 ft=tripuls(t,width,skew),产生幅度为1,宽度为width,且以0为中心左右各展开width/2大小,斜度为skew的三角波。width的默认值是1,skew的取值范围是-1~+1之间。一般最大幅度1出现在t=(width/2)*skew的横坐标位置。
% Program1.6.m
t=-3:0.01:3;
ft=tripuls(t,4,0.5);
plot(t,ft); grid on;
axis([-3,3,-0.5,1.5]);

(7)复指数信号

*调用格式是f=exp((a+j*b)t)
% Program1.7.m
t=0:0.01:3;
a=-1;b=10;
f=exp((a+j*b)*t);
subplot(2,2,1),plot(t,real(f)),title(‘实部’)
subplot(2,2,3),plot(t,imag(f)),title(‘虚部’)
subplot(2,2,2),plot(t,abs(f)),title(‘模’)
subplot(2,2,4),plot(t,angle(f)),title(‘相角’)

(8) 矩形脉冲信号

矩形脉冲信号可用rectpuls函数产生
调用格式为y=rectpuls(t,width),幅度是1,宽度是width,以t=0为对称中心。
% Program1.8.m
t=-2:0.01:2;
width=1;
ft=2*rectpuls(t,width);
plot(t,ft)
grid on;

2.信号的运算

(1)绘出连续序列f(t)=exp[(-0.1+j0.5)t]的实部信号、虚部信号、振幅信号、相位信号。

% Program1.9.m
clear all
t=-5:5;
x=-0.1+0.5j;
f=exp(x
t); %给出复指数信号
real_f=real(f); %取复指数信号的实部
imag_f=imag(f); %取复指数信号的虚部
mag_f=abs(f); %取复指数信号的振幅
phase_f=angle(f); %取复指数信号的相位
subplot(2,2,1);
plot(t,real_f);
xlabel(‘t’);title(‘实部’);
subplot(2,2,2);
plot(t,imag_f);
xlabel(‘t’);title(‘虚部’);
subplot(2,2,3);
plot(t, mag_f);
xlabel(‘t’);title(‘振幅’);
subplot(2,2,4);
plot(t,phase_f);
xlabel(‘t’);title(‘相位’);
其程序运行结果如图1.5所示。
在这里插入图片描述

                                       图1.5 信号的不同分量

(2)两个序列的加、乘运算

% Program1.10.m
clear all
t=0:0.01:2;
f1=2.^(-3t);
f2=0.7
sin(4pit);
f3=f1+f2;
f4=f1.f2;
subplot(2,2,1);plot(t,f1);title(‘f1(t)’);grid on;
subplot(2,2,2);plot(t,f2);title(‘f2(t)’);grid on;
subplot(2,2,3);plot(t,f3);title(‘f1+f2’); grid on;
subplot(2,2,4);plot(t,f4);title(\'f1
f2’); grid on;
其运行结果如图1.6所示
在这里插入图片描述

                                                     图1.6  信号的运算

五、实验内容

1.验证实验原理中程序

2.画出信号波形(1) (2)

3.自选二个简单的信号进行加减和乘法运算。

(1).用matlab实现f=f1(t)+f2(t)及 f=f1(t).f2(t)

程序如下…
clear all;
t=0:0.0001:5;
f1=(-t+4);
f2=stepfun(t,0)-stepfun(t,4);
f3=f1.*f2;
f4=f1+f2;
subplot(2,1,1),plot(t,f3),title(‘f1.f2’)
subplot(2,1,1),plot(t,f3),title(‘f1+f2’)
运行结果如下
在这里插入图片描述

(2).用matlab实现在这里插入图片描述

程序如下…
t = -10:10;
t0 = 0;
m = 2-exp(-2*t);
n = stepfun(t,t0);
y = m.*n;
stem(t,y);
hold on
plot(t,y,‘r’);
运行结果如下
在这里插入图片描述

(3).用matlab实现在这里插入图片描述

程序如下…
t = -10:10;
t0 = 0;
f1 = (1+cos(pi*t));
f2 = stepfun(t,t0)-stepfun(t,t0+2);
y = f1.*f2;
stem(t,y);
hold on
plot(t,y);
运行结果如下
在这里插入图片描述

六、实验报告要求

1.简述实验目的及实验原理。

2.对实验内容编写程序(M文件),绘出运算后信号的波形.

3.写出实验中的体会。

这是信号课的第一次实验,第一次的学习都是较为困难的,没有MATLAB软件,没有实验经验,不懂如何进行程序设计。面对种种问题,我放平了心态,认认真真地听老师讲课,课下自己用心钻研。学会了学习使用MATLAB产生基本信号,绘制信号波形,实现信号的基本运算,为接下来的信号分析和系统设计奠定了基础,收获颇多。我相信,自己的不懈努力,定会使我的实验动手能力和对信号的理解层次能够更上一层楼。


推荐阅读
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本主题面向IT专业人士,介绍了Windows Server 2012 R2和Windows Server 2012中的组托管服务账户(gMSA),涵盖了其应用场景、功能改进、硬件和软件要求以及相关资源。 ... [详细]
  • 自 Node.js 6.3 版本起,调试功能已内置在核心模块中,无需额外安装 node-inspector 等工具。通过简单的命令即可启动调试模式,并利用 Chrome 浏览器进行高效的代码调试。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 解决SVN图标显示异常问题的综合指南
    本文详细探讨了SVN图标无法正常显示的问题,并提供了多种有效的解决方案,涵盖不同环境下的具体操作步骤。通过本文,您将了解如何排查和修复这些常见的SVN图标显示故障。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
author-avatar
mobiledu2502920897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有