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 + 2 Continuous-time transfer function. A = -3 -2
1 0 B = 1
0 C = 1 3 D = 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); %计算卷积积分并绘出时域波形
MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析的更多相关文章
- MATLAB信号与系统分析(五)——连续时间信号的频谱分析
一.实验目的: 1.掌握傅立叶级数(FS),学会分析连续时间周期信号的频谱分析及MATLAB实现: 2.掌握傅立叶变换(FT),了解傅立叶变换的性质以及MATLAB实现. 二.利用符号运算求傅里叶级数 ...
- MATLAB信号与系统分析(三)——连续信号与系统的复频域分析及MATLAB实现
一.系统的拉普拉斯变换和反变换 1.MATLAB函数 F=laplace(f) %求拉氏变换 f=ilaplace(F) %求拉氏反变换 2.例子 clear all;clc;close all f= ...
- APUE 3 -- 信号 (signal)<II>: 可靠信号
一个事件可以事一个信号发送给一个进程,这个事件可以是硬件异常,可以是软件条件触发,可以是终端产生信号,也可以是一个kill函数调用.当信号产生后,内核通常会在进程表中设置某种形式的标志(flag).我 ...
- sleep与信号唤醒的问题 & 内核对信号的处理方式 & udelay
http://www.cnblogs.com/charlesblc/p/6277848.html 注意,sleep是会被信号唤醒的. sleep函数:#include <unistd.h&g ...
- linux信号基本概念及如何产生信号
linux信号基本概念及如何产生信号 摘自:https://blog.csdn.net/summy_j/article/details/73199069 2017年06月14日 09:34:21 阅读 ...
- sleep与信号唤醒的问题 & 内核对信号的处理方式
注意,sleep是会被信号唤醒的. sleep函数:#include <unistd.h>unsigned int sleep(unsigned int seconds);此函数使调用 ...
- Linux 信号详解六(可靠信号与不可靠信号)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h&g ...
- Oracle计算连续天数,计算连续时间,Oracle连续天数统计
Oracle计算连续天数,计算连续时间,Oracle连续天数统计 >>>>>>>>>>>>>>>>> ...
- matlab中datest() 将日期和时间转换为字符串格式
来源:https://ww2.mathworks.cn/help/matlab/ref/datestr.html?searchHighlight=datestr&s_tid=doc_srcht ...
随机推荐
- 谈“技术含量”的问题
最近又从离职同事那里听到这样的抱怨(原因),说做的事没有技术含量.想一想,从事车载软件开发这个行业快8年了,这个话题似乎从来没有停过.我自己曾经也为自己做的事是否有技术含量而苦恼过,今天就专门花点时间 ...
- StackExchange Redis如何实现BRPOP/BLPOP
今天在使用StackExchange Redis客户端时.我想要使用BRPOP,但是我发现StackExchange Redis并没有提供API,没办法只好找资料看文档了. 原来StackExchan ...
- Android/iOS微信6.3.5同时发布更新 支持群视频聊天、群公告
下午微信6.3.5发布更新,新版最大变化就是支持群视频聊天,又一次向手机QQ靠拢.在群管理方面,支持发布群公告,支持群主转让给其他群成员,同样都是QQ玩剩下的功能.另外,新版支持微信运动查看步数图表. ...
- Android EditText的设置
1.输入法Enter键图标的设置: 软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有normal,actionUnspecified,actionNone,ac ...
- Unity 3D 粒子系统的一点经验
http://hunterwang.diandian.com/post/2012-10-21/40041523890 最近做东西需要增加效果,简单的运用了一下粒子效果,真心感觉比较难调整好效果.同时也 ...
- ZeroMQ安装
一.ZeroMQ介绍 ZeroMQ是一个开源的消息队列系统,按照官方的定义,它是一个消息通信库,帮助开发者设计分布式和并行的应用程序. 首先,我们需要明白,ZeroMQ不是传统的消息队列系统(比如Ac ...
- Android程序启动加载动画实现
package com.example.bmob_test.ui;//程序启动动画,图片颜色由浅到深,方法一 import com.example.bmob_test.LogActivity; imp ...
- fsck检查和修复文件系统
重视:fsck不能乱用.先要把文件系统umount掉,然后检查.最好启动到单用户模式下fsck. 常见的5种损坏类型 1 未被引用的inode 2 难以置信的超大链接数 3 没有记录在磁盘块映射表中的 ...
- Couchbase 介绍 - 更好的 Cache 系统
在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度. 术语 节点:指集群里的一台服务器. 现有 Cache 系统的特点 目前业界使用得最多 ...
- Xenomai
http://blog.csdn.net/robertsong2004/article/details/43889249 嵌入式系统的开发,如果对实时性要求不高,就可以使用Linux自身的实时补丁实现 ...