您的位置:首页 > 编程语言 > MATLAB

信号与系统常用matlab函数

2017-12-10 21:42 302 查看
一、连续信号的matlab表示

1.抽样函数:sinc(t)=sin(pi*t)/(pi*t)

2.矩形脉冲信号:

rectpuls(t,width)

产生一个幅值为1(0~1),宽度为width,相对于t=0点左右对称的矩形波信号,横坐标范围由向量t决定,以t=0为中心向左右各展开width/2的范围。width默认值为1,

t=0:0.001:4;

T=1;

ft=rectpuls(t-2T,2*T);

plot(t,ft);

相当于把矩形函数右移了2T,矩形宽度是2T

周期性矩形波(方波)信号在matlab中用square函数来表示,调用形式为

y=square(2*pi*f*t,DUTY)

幅值为±1,占空比为duty,

>> t=-0.0625:.0001:.0625;

>> y=square(2*pi*30*t,75);%占空比为75%,频率为30Hz

三角波脉冲信号

y=sawtooth(2*pi*f*t,width)

幅值±1,width参数介于0-1之间,表示最大幅度出现的位置

一般周期性脉冲信号

pulstran(T,d,’func‘,,)后面接了func的相关参数

T表示了横坐标范围,d表示信号周期,基于一个名为func的连续函数并以之为一个周期,从而产生一串周期性的连续函数。

二、离散信号的Matlab表示

k=-2:4;f=[2,1,1,-1,3,0,2];

若序列是从k=0开始的,只用一个向量f就可以表示该序列了。由于内存限制,matlab不能表示一个任意的无穷序列

1.指数序列

>> k=0:10;

>> A=1;

>> a=-0.6;

>> fk=A*a.^k;由于k是一个矩阵,fk也应该是一个矩阵,对矩阵的元素进行运算,使用.^

>> stem(k,fk);

>> grid on

>> fk=A*a^k;

注意使用.^

2.正弦序列

3.单位冲激序列

只在k=0的位置是1,其他是0

借助全零矩阵函数:zeros

>> k=-50:50;

>> delta=[zeros(1,50),1,zeros(1,50)];

>> stem(k,delta)

101个数,两个矩阵合并成一个,中间的数是1,实现单位冲激序列

4.单位阶跃

利用ones函数ones(
4000
1,N)

三、信号运算的Matlab实现

1.信号的尺度变换、翻转、平移

直接对信号函数的x参数改改就好了

2.离散序列的差分与求和

y=diff(y);%意思是f[k]=f[k]-f[k-1]

y=sum(f(k1:k2));%意思是从k1到k2求和

3.连续信号的微分和积分

微分:

h=0.001;x=0:h:pi;

y=diff(sin(x.^2))/h;

积分:

quad('function_name',a,b)

function_name为被积函数名(也是.m文件的文件名),a和b是指定的积分区间

function yt=functri(t)

yt=tripuls(t,4,0.5);

>> h=0.001;

>> t=-3:h:3;

>> y1=diff(functri(t))/h;

>> figure(1);

>> plot(t(1:length(t)-1),y1);

在求微分之后,x的维数会减小1,

求积分:

t=-3:0.1:3;

for x=1:length(t)

y2(x)=quad('functri',-3,t(x));

end

figure(2);plot2(t,y2);

由于是积分图像,每一个位置都要有,所以采用循环的方式

也可以使用 integral函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab simulink 应用