MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析
一、连续时间信号的表示:
1、向量表示法:
在MATLAB中,是用连续信号在等时间间隔点的样值来近似表示连续信号,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。
对于连续时间信号f(t),一般是用两个行向量f和t来表示。t=t1:p:t2 ,t1 表示的是信号的起始时间,t2为终止时间,p为时间的间隔。而f为连续时间f(t)在向量t所定义的时间范围内对应的样值。
2、符号运算表示法:
使用sym定义变量,然后进行表示。
Eg:分别采用上述两种方法画出抽样信号:
clear all; t=-10:1.5:10;%取点数比较少,图形会比较失真 f=sin(t)./t; subplot(2,2,1),plot(t,f)t=-10:0.1:10;%取点数比较多,图形会比较接近 f=sin(t)./t; subplot(2,2,2),plot(t,f)f=sym('sin(t)/t');%采用符号方法 subplot(2,2,3),ezplot(f,[-10 10]) t=-3*pi:pi/100:3*pi;ft=sinc(t/pi);%直接用malab中的函数 subplot(2,2,4),plot(t,ft)
二、一些常用信号的表示:
1、单位阶跃信号:
(1)利用符号函数maple中的内核函数Heaviside
(2)利用自编函数Heaviside(t)
function f=Heaviside(t) f=(t>0);
(3)利用符号函数来生成单位阶跃函数
t=-10:0.1:10; f=sign(t)/2+0.5; plot(t,f); axis([-5,5,-1.2,1.2]);
clear all %利用maple中的heaviside函数来实现u(t+3)-2u(t) subplot(2,2,1); syms t f=heaviside(t+3)-2*heaviside(t); ezplot(f,[-3*pi,3*pi]) axis([-5,5,-1.2,1.2]); title('u(t+3)-2u(t)');%利用自己编写的heaviside函数来实现u(t+3)-2u(t) subplot(2,2,2); t=-5:0.01:5; f=Heaviside(t+3)-2*Heaviside(t); plot(t,f); axis([-5,5,-1.2,1.2]); title('u(t+3)-2u(t)')%利用符号函数来实现单位阶跃信号 subplot(2,2,3); t=-5:0.05:5; f=sign(t); ff=1/2+1/2*f; plot(t,ff); axis([-5 5 -0.1 1.1]); title('u(t)')%利用符号函数来实现u(t+3)-2u(t) subplot(2,2,4); t=-5:0.01:5; f=(1/2+1/2*sign(t+3))-2*(1/2+1/2*sign(t)); plot(t,f),axis([-5,5,-1.2,1.2]),title('u(t+3)-2u(t)')
PS:由于自己生成的阶跃函数定义u(0)=0,而自带的定义为u(0)=1,所以会出现这种图形没有连接起来的问题。
2、MATLAB信号处理工具箱提供的连续信号:
(1)使用MATLAB自带函数生成:
%指数信号的表示y=A*exp(a*t) subplot(2,4,1); A=1; a=-0.4; t=0:0.01:10; ft=A*exp(a*t); plot(t,ft); title('指数信号') %要放在plot后面 grid on%正弦信号y=A*sin(w0*t+phi) subplot(2,4,2); A=1; w0=2*pi; phi=pi/6; t=0:0.001:8; ft=A*sin(w0*t+phi); plot(t,ft); title('正弦信号'); grid on;%抽样函数sinc(t)=sin(pi*t)/pi*t subplot(2,4,3); t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft); title('抽样函数信号'); grid on;%矩形脉冲信号y=rectpuls(t,width)产生一个幅值为1,宽度为width,相对于t=0点左右对称的矩形波信号 subplot(2,4,4); t=0:0.001:4; T=1; ft=rectpuls(t-2*T,2*T); plot(t,ft); axis([-1 5 -0.5 1.5]); %要放在plot后面 title('矩形脉冲信号'); grid on;%周期性矩形信号即方波信号y=square(t,DUTY)产生一个周期为2*pi,幅值为1(-1)的周期性方波信号,duty表示占空比 subplot(2,3,4); t=-0.0625:0.001:0.0625; ft=square(2*pi*30*t,75); plot(t,ft); axis([-0.0625 0.0625 -1.5 1.5]); title('频率为30赫兹的周期性方波信号'); grid on;%三角波脉冲信号y=tripuls(t,width,skew)用以产生一个最大幅度为1,宽度为width,斜度为skew的三角波信号。 %该函数的横坐标范围由向量t决定,是以t=0为中心向左右各展开width/2的范围。 %斜度skew是介于-1和1之间的值,它表示最大幅度1出现所对应的横坐标位置。 %一般地,最大幅度1出现在t=(width/2)×skew的横坐标位置 subplot(2,3,5); t=-3:0.001:3; ft=tripuls(t,4,0.5); plot(t,ft); axis([-3 3 -0.5 1.5]); title('三角波脉冲信号'); grid on;%周期性三角波信号y=sawtooth(t,width)用以产生一个周期为2*pi,最大幅度为1,最小幅度为-1的周期性三角波信号(又称锯齿波信号)。 %width表示最大幅度出现的位置 subplot(2,3,6); t=-5*pi:pi/10:5*pi; ft=sawtooth(t,0.5); plot(t,ft); axis([-16 16 -1.5 1.5]); title('周期性三角波信号'); grid on;
(2)信号工具函数
%一般周期性脉冲信号y=pulstran(t,d,'func',p1,p2,...)
%t制定pulstran的横坐标范围,向量d用于指定周期性的偏移量(即各个周期的中心点)
%整个pulstran函数的返回值实际上就相当于y=func(t-d(1))+func(t-d(2))+......
%p1,p2...是需要传送给func函数的额外输入参数值(除去时间变量t外),例如rectpuls需要width这个额外参数等
%一般周期性脉冲信号y=pulstran(t,d,'func',p1,p2,...) %t制定pulstran的横坐标范围,向量d用于指定周期性的偏移量(即各个周期的中心点) %整个pulstran函数的返回值实际上就相当于y=func(t-d(1))+func(t-d(2))+...... %p1,p2...是需要传送给func函数的额外输入参数值(除去时间变量t外),例如rectpuls需要width这个额外参数等 clear all; subplot(1,2,1); t=-0.5:0.001:1.5; d=0:0.5:1; y=pulstran(t,d,'rectpuls',0.1);%周期性矩形信号 plot(t,y); axis([-0.1 1.1 -0.1 1.1]); title('周期性矩形信号') grid on%周期三角波信号 subplot(1,2,2); t=-0.2:0.001:1.2; d=0:1/2:1; y=pulstran(t,d,'tripuls',0.1,-1); plot(t,y); axis([-0.1 1.1 -0.1 1.1]); title('周期性三角波信号'); grid on;
3、复指数信号
例子:
%实现方法一:%fuction fexp(d,w,t1,t2,a) %绘制复指数信号时域波形程序 %d:复指数信号复频率实部 %w:复指数信号复频率虚部 %t1:绘制波形的起始时间 %t2:绘制波形的终止时间 %a:复指数信号的幅度 clear all figure(1); fexp(0,pi/4,0,15,2);%实现方法二: t=0:0.01:15; a=0;b=pi/4; z=2*exp((a+i*b)*t); figure(2) subplot(2,2,1),plot(t,real(z)),title('实部') subplot(2,2,3),plot(t,imag(z)),title('虚部') subplot(2,2,2),plot(t,abs(z)),title('模') subplot(2,2,4),plot(t,angle(z)),title('相角')
三、连续信号的时域运算、时域变换
1、利用符号运算实现连续信号的时域变换
(1)相加:
s=symadd(f1,f2)%s=f1+f2 ezplot(s)
(2)相乘:
s=symmul(f1,f2)%s=f1*f2 ezplot(s)
(3)移位:
y=subs(f,t,t-t0)%f(t-t0) y=subs(f,t,t+t0)%f(t+t0) ezplot(y)
(4)反折:
y=subs(f,t,-t) ezplot(y)
(5)尺度变换:
y=subs(f,t,a*t) ezplot(y)
(6)倒相
y=-f ezplot(y)
clear all syms t %f=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-2))')f=(t/2+1)*(heaviside(t+2)-heaviside(t-2)); subplot(2,3,1),ezplot(f,[-3,3]),title('f(t)')y1=subs(f,t,t+2) subplot(2,3,2),ezplot(y1,[-5,1]),title('f(t+2)')y2=subs(f,t,t-2) subplot(2,3,3),ezplot(y2,[-1,5]),title('f(t-2)')y3=subs(f,t,-t) subplot(2,3,4),ezplot(y3,[-3,3]),title('f(-t)')y4=subs(f,t,2*t) subplot(2,3,5),ezplot(y4,[-2,2]),title('f(2*t)')y5=-f subplot(2,3,6),ezplot(y5,[-3,3]),title('-f(t)')
四、连续系统的冲激响应、阶跃响应
1、冲激响应:
limpulse(b,a)impulse(b,a,t)impulse(b,a,t1:p:t2)y=impulse(b,a,t1:p:t2)
2、阶跃响应
step(b,a) step(b,a,t) step(b,a,t1:p:t2) y=step(b,a,t1:p:t2)
其中:
clear all; a=[1 5 6]; b=[3 0 2];%冲击响应 figure(1) subplot(2,2,1),impulse(b,a) subplot(2,2,2),impulse(b,a,5) %绘制0~5范围内冲激响应的时域波形 subplot(2,2,3),impulse(b,a,1:0.1:2) %绘制1~2范围内,步长为0.1的冲激响应的时域波形 y1=impulse(b,a,1:0.1:3);%给出数值解 subplot(2,2,4),plot(1:0.1:3,y1)%阶跃响应 figure(2) subplot(2,2,1),step(b,a) subplot(2,2,2),step(b,a,5) subplot(2,2,3),step(b,a,1:0.1:2) y2=step(b,a,1:0.1:3); subplot(2,2,4),plot(1:0.1:3,y2)
五、求LTI连续系统的响应
1、零输入响应:
nitial(A,B,C,D,y(0-),t)
2、零状态响应:
Lsim(sys,X,t) Lsim(b,a,X,t) Lsim(A,B,C,D,X,t)
3、全响应:
lsim(A,B,C,D,X,t,y(0-))
其中:
微分方程系统函数对象的生成函数:sys=tf(b,a)
微分方程的状态方程系数生成函数: [A,B,C,D]=tf2ss(b,a)
4、例子:
clear all; a=[1 3 2]; b=[1 3]; t=0:0.01:10; x=exp(-3*t); rc=[2,1]; sys=tf(b,a) [A,B,C,D]=tf2ss(b,a) figure(1) subplot(3,1,1),initial(A,B,C,D,rc,t) %零输入响应 subplot(3,1,2),lsim(b,a,x,t) %零状态响应 subplot(3,1,3),lsim(A,B,C,D,x,t,rc) %全响应,只能用状态系数来表示系统
结果:
sys =s + 3-------------s^2 + 3 s + 2Continuous-time transfer function.A =-3 -21 0B =10C =1 3D =0
六、两个信号的卷积:
1、自编卷积函数:
function [f,t]=gggfconv(f1,f2,t1,t2) d=input(‘请输入采样时间间隔: ');f=conv(f1,f2); %计算序列f1和f2的卷积和f=f*d; ts=t1(1)+t2(1) %计算序列f非零值的起始位置l=length(t1)+length(t2)-2; %计算序列f非零值的宽带t=ts:d:(ts+l*d) %计算序列f非零值的时间向量subplot(2,2,1);plot(t1,f1) subplot(2,2,2);plot(t2,f2)subplot(2,2,3);plot(t,f);
2、例子:
clear all; %计算连续时间信号卷积积分并绘波形 t1=-1:0.01:3; f1=Heaviside(t1)-Heaviside(t1-2); %定义信号 t2=t1; f2=0.5*t2.*(Heaviside(t2)-Heaviside(t2-2)); %定义信号 [t,f]=gggfconv(f1,f2,t1,t2); %计算卷积积分并绘出时域波形
转载于:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4470640.html
MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析相关推荐
- matlab中连续信号的卷积,连续时间信号卷积运算的MATLAB实现
. . . .. .. 连续时间信号卷积运算的MATLAB 实现 一.实验目的 (1) 理解掌握卷积的概念及物理意义. (2) 理解单位冲击响应的概念及物理意义. 二.实验原理 根据前述知识,连续信号 ...
- 连续时间信号,离散时间信号,模拟信号,数字信号的区别。
最近在准备考研复试,查询了很久连续时间信号.离散时间信号.模拟信号和数字信号的区别,发现网上各种说法不一,其中不乏一些混淆了概念的回答,非常容易误导大家,在这里以熊庆旭老师编写的<信号与系统&g ...
- matlab混叠现象与频率分辨率,连续时间信号频谱分析研究及MATLAB实现
0.引言在信号处理过程中,频域分析方法往往比时域分析方法更方便和有效.对于确知连续时间信号,其频域分析可以通过连续时间傅里叶变换来进行,但是,这样计算出来的结果仍然是连续函数,计算机不能直接加以处理. ...
- matlab实现周期阶跃函数,连续时间信号傅利叶变换与MATLAB实现.doc
Matlab应用实践课程设计 PAGE PAGE 22 - 课程设计任务书 学生姓名: 潘少俊 专业班级:电子科学与技术0701 班 指导教师:梁小宇 工作单位:信息工程学院 题 目: 连续时间信号的 ...
- matlab自带的信号,实验一 连续时间信号在MATLAB中的表示..ppt
<医学信号处理I> 实验一 连续时间信号在MATLAB中的表示和运算 1.1 实验目的 学会使用MATLAB表示常用连续时间信号的方法 观察并熟悉这些信号的波形和特性 1.2 实验原理及实 ...
- 【信号系统实验2】MATLAB—连续时间信号与系统的频域分析
目录 1.实验目的 2.实验内容 1.周期信号的分析 2.非周期信号的分析 3.连续时间系统的响应 1.实验目的 1.熟悉信号的合成.分解原理,了解信号频谱的含义,加深对傅里叶级数的理解. 2.掌握连 ...
- matlab 日期加小时数_实验一 连续时间信号在Matlab中的运算
实验一连续时间信号在Matlab中的运算 一.实验目的 1.学会运用Matlab进行连续时间信号的时移.反褶和尺度变换. 2.学会运用Matlab进行连续时间信号相加.相乘.微分.积分和卷积运算. 3 ...
- 信号与系统第一次试验:连续时间信号的MATLAB表示及运算
信号与系统第一次试验:连续时间信号的MATLAB表示及运算 前言 一.实验目的 二.实验原理 三.实验环境 四.实验内容和步骤及实验数据 五.实验结论 六.实验总结 前言 为了帮助同学们完成痛苦的实验 ...
- 连续时间信号的采样与恢复 Matlab仿真
目录 前言 采样 为什么需要采样 采样是什么 奈奎斯特采样定理 采样恢复 采样定理Matlab仿真(含代码) 前言 记录在学数字信号处理过程中一些个人理解与感悟,本文主要讲的是采样定理在Matlab实 ...
最新文章
- Wiew 像写 Android UI 一样写小游戏布局
- zookeeper-01
- Codeforces Round #450 (Div. 2)D. Unusual Sequences[数论][组合数学][dp II]
- 编程语言那么多,学哪个能拿高薪?
- [转载] 中华典故故事(孙刚)——31 千里送鹅毛_礼轻情义重
- 从Google到Facebook再到微博,算法与数据中台大咖谈
- QuickHit游戏
- truncate表和update 效率_SQL中Truncate的用法
- 我的世界服务器物品管理,我的世界NEI物品管理器mod详细图文使用教程
- QGIS的部分使用流程
- Tools - Blender快捷键大全
- 2017阿里巴巴实习生招聘编程题
- windows系统下进入jupyter本地服务器(localhost)的步骤
- 基于安卓的共享自习室的设计与实现
- 【Pandas 基础应用 拆分Excel工作簿】
- #python 自动识别视频字幕
- [zz] 音频DAC的原理
- Java中如何打印出一个数组中所有元素呢?
- Ubuntu16.04下fctix无法切换中英文输入法
- Hello Qt(十)——QT输入组件
热门文章
- 初识大数据(四. 大数据与人工智能的关系)
- Unix系统编程():分散输入和集中输出(Scatter-Gather IO):readv和writev
- BZOJ 2019 [Usaco2009 Nov]找工作:spfa【最长路】【判正环】
- HTTP POST GET 区别
- 关于微软企业库中依赖注入容器Unity两种生成对象的实现
- 面试指南:新人面试做好三个“第一”
- spingMVC post 提交乱码问题
- 计算机网络---DHCP/NAT(简单介绍)
- ES6学习(三)—字符串的扩展
- 利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法)