Matlab 信号的基本操作实例:matlab pulstran函数

参考 《Matlab 在电路与信号及控制理论中的应用》 陈晓平
3.1 信号的基本操作
例3.2 试用Matlab生成一个幅度为1,以t = 2T 为对称中心的矩形脉冲信号y(t)
矩形脉冲信号在Matlab中用rectpuls函数表示,其调用方式为:
y = rectpulse(t, width)
用以产生一个幅度为1,宽度为width以t = 0为对称中心的矩形脉冲波。Width的默认值为1。
0:0.001:4;
1;
yt rectpuls(t-2*T, 2*T);
plot(t, yt)
axis([0, 4, 0, 1.2]);
[转载]Matlab <wbr>信号的基本操作实例
例3.3 使用Matlab绘制信号(y(t) = frac{sin[pi(t-2)]}{pi(t-2)})的波形 
信号y(t) = sinc(t-2),可以使用sinc函数表示
-4:0.001:8
t1 t-2;
sinc(t1);
plot(t, y);
xlabel('t');
ylabel('y(t)');
axis([-4, 8, -0.4, 1.0]),grid
[转载]Matlab <wbr>信号的基本操作实例 
在matlab中,提供了一些产生常用信号的matlab函数,如表3.1所示。分别用于产生三角波、方波、sinc函数等信号的波形。
表3.1 常用信号的matlab产生函数
sawtooth 产生锯齿波和三角波 pulstran 产生冲击串
square 产生方波 rectpuls 产生非周期方波
sinc 产生sinc函数波形 tripuls 产生非周期三角波
chirp 产生调频余弦信号 diric 产生Dirichlet或周期sinc
gauspuls 产生高斯正弦脉冲信号 gmonopuls 产生高斯单脉冲信号
例3.4 编程生成一个最大幅度为1,宽度为4的三角波函数y(t),函数值的非零值为(-2, 2),并画出y(2 - 2t)的波形。
三角波信号的产生可以通过函数tripuls实现。
-3:0.001:3;
width 4;
skew 0.5;
 
tripuls(t, width, skew);
subplot(2,1,1), plot(t, y)
 
xlabel('t'),ylabel('y(t)')
grid
y1 tripuls(2-2*t, width, skew);
subplot(212),plot(t, y1)
xlabel('t'),ylabel('y(2-2t)')
grid
[转载]Matlab <wbr>信号的基本操作实例
例3.6 计算下面两个序列的卷积
(x(k) = delta(k) + 2delta(k-1) + 2delta(k-2) + delta(k-3) + delta(k-4))
(h(k) = 3delta(k) + 2delta(k-1) + delta(k-2))
[1 1];
[3 1];
conv(x, h)
subplot(311),stem(0:4, x, 'filled'),axis([-1 15]),ylabel('x(k)')
subplot(312),stem(0:2, h, 'filled'),axis([-1 15]),ylabel('h(k)')
subplot(313),stem(0:6, y, 'filled'),axis([-1 15]),ylabel('y(k) x(k)*h(k)')
[转载]Matlab <wbr>信号的基本操作实例
例3.7 对例3.4中所示的三角波信号y(t),试利用matlab计算y'(t)和(int_{-infty}^{t}y(tau)dtau)
连续信号的微分可以用diff函数来近似实现,定积分可以用quad函数实现,quad函数时一种数值积分方法,称为递归自适应辛普森积分。其调用形式为:
quad('fun', a, b)
其中,fun为被积函数名(.m文件),a和b为指定的积分区间
本题为了方便利用quad函数求解y(t)的积分,定义如下自编函数(保存为functri.m)文件:
function yt = functri(t)
yt = tripuls(t, 4, 0.5)
然后利用diff函数和quad函数,并调用自编函数functri实现对三角波信号y(t)的微分和积分
0.001;t -3: h: 3;
y1 diff(functri(t)) h;
subplot(211)
plot(t(1:length(t) 1), y1);
xlabel('t'),ylabel('y1(t)')
title('dy(t)/dt'),grid
-3: 0.1: 3;
for 1: length(t)
    y2(x) quad('functri'-3, t(x));
end
subplot(212), plot(t, y2)
xlabel('t'), ylabel('y2(t)')
title('Integral of y(t)');
grid
[转载]Matlab <wbr>信号的基本操作实例
实际应用中,很多有用信号经常有复杂的数学表示。而计算信号的能量或功率涉及对这些表达式的平法求积分,这是很困难的。但利用Matlab的数值积分的方法可以精确估计很多较难的积分。
例3.9 利用Matlab计算下列信号的能量或功率,判断信号是能量信号还是功率信号,并画出信号波形。
(1) (x(t) = 3pi sin(8pi t + 1.3)cos(4pi t - 0.8)e^{sin(12pi t)})
(2) [y(t) = begin{cases}x(t) &0.2 leq t leq 0.85 \  0 &othersend{cases}]
[转载]Matlab <wbr>信号的基本操作实例
[转载]Matlab <wbr>信号的基本操作实例
 
(1)将x(t)利用三角函数积化和差公式化简可知,x(t)是一个后期T = 0.5的周期信号,因此x(t)不是能量信号。对一个周期信号要计算它的功率,只需计算它在一个周期的功率即可。
为了方便用数值积分方法计算,先定义以下语句的函数(保存为e7x1.m文件)
function x2 e7x1(t)
3*pi sin(8*pi*t 1.3) .* cos(4*pi*t 0.8) .* exp(sin(12*pi*t));
x2 x.^2;
主程序如下
0: 0.001: 1;
3*pi sin(8*pi*t 1.3) .* cos(4*pi*t 0.8) .* exp(sin(12*pi*t));
plot(t, x), xlabel('t'), ylabel('x(t)')
Px (1 0.5)*quad('e7x1'0, 0.5)
[转载]Matlab <wbr>信号的基本操作实例
Px = 54.7550
(2)信号 y(t)在一个有限的时间区间内有限且非零,所以它是一个能量信号,功率Py = 0,利用下面的程序计算能量并画出波形
0:0.001:1;
3*pi sin(8*pi*t 1.3) .* cos(4*pi*t 0.8) .* exp(sin(12*pi*t));
x.*(t>=0.2).*(t<=0.85);
plot(t, y), xlabel('t'), ylabel('y(t)');
Ey quad('e7x1'0.2, 0.85)
[转载]Matlab <wbr>信号的基本操作实例
Ey = 30.2105
当然了,使用符合微积分也是可以完成上面的计算的,不过计算速度略慢,具体语句如下
syms t;
3*pi sin(8*pi*t 1.3) cos(4*pi*t 0.8) exp(sin(12*pi*t));
x2 x^2;
Px 2*int(x2, t, 0, 0.5)
dPx vpa(Px)
dPx  = 54.754960612386095491000189710637
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值