概述
线性调频函数与方波函数
-
线性调频函数
在MATLAB中,产生线性调频扫频信号的函数chirp,其调用格式如下:-
y=chirp(t,f0,t1,f1):产生一个线性(频率随时间线性变化)信号,其时间轴由数组t定义。时刻t0的瞬时频率为f0时刻,时刻t1的瞬时频率为f1。默认情况下:f0=0Hz,t1=1,发=100Hz
-
y=chirp(t,f0,t1,f1,‘method’):指定改变扫频的方法,可用的扫频的方法有’linear’(线性扫频)、‘quadratic’(二次扫频)和’logarithmic’(对数扫频);默认时为’linear’。注意:对于对数扫频,必须有f1>f0。
-
y=chirp(t,f0,t1,f1,‘method’,phi):指定信号的初始相位为phi(单位为度),默认phi=0。
-
y=chirp(t,f0,t1,f1,‘quadratic’,phi,‘shape’):根据指定的方法在时间t上产生余弦扫频信号,f0为第一时刻的瞬时频率,f1为t1时刻的瞬时频率,f0和f1单位都为Hz。如果未指定,f0默认为e-6(对数扫描方法)或0(其他扫频方法),t1为1,f1为100Hz。
-
phi允许指定一个初始相位(以deg为单位),默认为0,如果想忽略此参数,直接设置后面的参数,可以将此参数指定为0或[];shape指定二次扫频方法的抛物线的形状,凹还是凸其值为concave或convex,如果此信号被忽略,则根据f0和f1的相对大小决定是凹还是凸。
clear; t = 0:0.01:2; y = chirp(t,0,1,120); plot(t,y); axis([0,1,0,1]); ylabel('x(t)'); xlabel('t'); grid on;
-
-
方波函数
在MATLAB中,使用函数square得到方波函数,该函数的调用格式为:-
x=square(t):类似于sin(t),产生周期为2*pi,幅值为1的方波
-
x=square(t,duty):产生指定周期的矩形波,其中duty用于指定脉冲宽度与整个周期的比例。
%一个连续的周期性矩形的信号频率为6KHz,信号幅度在0~3V之间, %脉冲宽度与周期的比例为1:4,要求在窗口上显示其2个周期的信号波形, %并对信号的1个周期进行15点采样来获得离散信号,显示原连续信号与采样获得的离散信号. clear all; f = 6000;nt = 3; N = 15;T = 1/f; dt = T/N; n = 0:nt * N - 1; tn = n * dt; x = square(2 * f * pi * tn,25) + 1; %产生时域信号,且幅度在0~2之间 subplot(2,1,1);stairs(tn,x,'k'); axis([0 nt*T 1.1*min(x) 1.1*max(x)]) ylabel('x(t)'); subplot(2,1,2);stem(tn,x,'filled','k'); axis([0 nt*T 1.1*min(x) 1.1*max(x)]) ylabel('x(n)');
-
随机函数与三角波函数
-
随机函数
在MATLAB中,函数rand可以生成随机信号,该函数的调用方法如下:-
Y = rand(n):返回一个n*n的随机矩阵。如果n不是数量,则返回错误信息
-
Y = rand(m,n)或Y = rand([m n]):返回一个m*n的随机矩阵
-
Y = rand(m,n,p,……)或Y = rand([m,n,p,……]):产生随机数组
-
Y = rand(size(A)):返回一个和A具有相同尺寸的随机矩阵
tn = 0:50; N = length(tn); x = rand(1,N); subplot(1,2,1); plot(tn,x,'k'); ylabel('x(t)'); subplot(1,2,2); stem(tn,x,'filled','k'); ylabel('x(n)');
-
-
三角波函数
在MATLAB中,函数sawtooth用于产生锯齿波或三角波信号,该函数的调用方法为:-
x = sawtooth(t):产生周期为2pi,振幅从-1至1的锯齿波。在2pi的整数倍处值为-1至1,这一段的波形斜率为1/pi
-
sawtooth(t,width):产生三角波函数,width值在0至1之间
clear; Fs = 10000; t = 0:1/Fs:1; x1 = sawtooth(2 * pi * 40 * t,0); x2 = sawtooth(2 * pi * 40 * t,1); subplot(2,1,1); plot(t,x1); axis([0,0.25,-1,1]); subplot(2,1,2); plot(t,x2); axis([0,0.25,-1,1]);
-
函数rectpuls与函数diric
-
rectpuls函数
在MATLAB中,产生非周期方波信号的函数rectpuls,调用格式如下:
y=rectpuls(t,w):产生指定宽度为w的非周期方波clear t = -3:0.001:3; y = rectpuls(t); subplot(121); plot(t,y); axis([-2 2 -1 2]); grid on; xlabel('t'); ylabel('w(t)'); y = 2.5 * rectpuls(t,2); subplot(122); plot(t,y); axis([-2 2 -1 3]); grid on; xlabel('t'); ylabel('w(t)');
-
diric函数
函数diric用于产生函数Dirichilet或周期函数Sinc,其调用格式如下:
y=diric(x,n):返回一个大小与x相同的矩阵,其元素为函数Dirichletclf; t = -3 * pi:pi / 40:4 * pi; subplot(2,1,1); plot(t,sinc(t)); title('Sinc'); grid on; xlabel('t'); ylabel('sinc(t)'); subplot(2,1,2); plot(t,diric(t,5)); title('Diric'); grid on; xlabel('t'); ylabel('diric(t)');
函数sinc与函数tripuls
-
函数sinc定义为: s i n c ( t ) = s i n t t sinc(t) = frac{sint}{t} sinc(t)=tsint,其调用格式如为:
y=sinc(x):返回一个有函数sinc值为元素的矩阵clear t = (1:12)'; x = randn(size(t)); ts = linspace(-10,10,500)'; y = sinc(ts(:,ones(size(t))) - t(:,ones(size(ts)))') * x; plot(t,x,'o',ts,y) ylabel('x(n)'); xlabel('n'); grid on;
-
函数tripuls用于产生非周期三角波信号,该函数的调用格式如下:
y=tripuls(t,w,s):产生周期为w的非周期方波,斜率为s(-1<s<1)clear t = -2:0.001:2; y = tripuls(t,4,0.5); plot(t,y); grid on; axis([-3 3 -1 2]); xlabel('t'); ylabel('y(t)');
函数gauspuls与函数pulstran
-
函数gauspuls用于产生高斯正弦脉冲信号函数,该函数的调用格式如下:
yi=guaspuls(T,FC,BW,BWR):返回持续时间为T,中心频率为FC(Hz),宽带为BW的幅度为1的高斯正弦脉冲(RF)信号的抽样
TC=guaspuls(‘cutoff’,FC,BE,BER,TPB):返回按参数TEP(dB)计算所对应的截断时间TC。clear tc = gauspuls('cutoff',60e3,0.6,[],-40); t = -tc:1e-6:tc; yi=gauspuls(t,60e3,0.6); plot(t,yi); xlabel('t'); ylabel('h(t)'); grid on;
-
函数pulstran用于脉冲序列发生器,其调用格式如下:
y=pulstran(t,d,‘func’):该函数基于一个名为func的连续函数,并以之为一个周期,从而产生一串周期性的连续函数(func函数可自定义)。函数pulstran的横坐标范围由向量t指定,向量d用于指定周期性的偏移量(即各个周期的中心点),这样函数func会被计算length(d)次,从而产生一个周期性的脉冲信号。函数pulstran的一般调用形式为:
y=pulstran(t,d,‘dunc’,p1,p2,……):p1,p2,……为需要传送给函数func的额外输入参数值(除了变量t之外)clear T=0:1/1E3:1; D=0:1/4:1; Y=pulstran(T,D,'rectpuls',0.1); subplot(121); plot(T,Y); xlabel('t'); ylabel('w(t)'); grid on; axis([0,1 -0.1,1.1]); T=0:1/1E3:1; D=0:1/3:1; Y=pulstran(T,D,'tripuls',0.2,1); subplot(122); plot(T,Y); xlabel('t'); ylabel('w(t)'); grid on; axis([0,1 -0.1,1.1]);
参考文献:
- 《精通MATLAB信号处理》,沈再阳编写,清华大学出版社
最后
以上就是无语外套为你收集整理的MATLAB信号处理---学习小案例(5)---信号波形的产生的全部内容,希望文章能够帮你解决MATLAB信号处理---学习小案例(5)---信号波形的产生所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复