MATLAB信号处理---学习小案例(5)---信号波形的产生

线性调频函数与方波函数

  1. 线性调频函数
    在MATLAB中,产生线性调频扫频信号的函数chirp,其调用格式如下:

    1. y=chirp(t,f0,t1,f1):产生一个线性(频率随时间线性变化)信号,其时间轴由数组t定义。时刻t0的瞬时频率为f0时刻,时刻t1的瞬时频率为f1。默认情况下:f0=0Hz,t1=1,发=100Hz

    2. y=chirp(t,f0,t1,f1,‘method’):指定改变扫频的方法,可用的扫频的方法有’linear’(线性扫频)、‘quadratic’(二次扫频)和’logarithmic’(对数扫频);默认时为’linear’。注意:对于对数扫频,必须有f1>f0。

    3. y=chirp(t,f0,t1,f1,‘method’,phi):指定信号的初始相位为phi(单位为度),默认phi=0。

    4. y=chirp(t,f0,t1,f1,‘quadratic’,phi,‘shape’):根据指定的方法在时间t上产生余弦扫频信号,f0为第一时刻的瞬时频率,f1为t1时刻的瞬时频率,f0和f1单位都为Hz。如果未指定,f0默认为e-6(对数扫描方法)或0(其他扫频方法),t1为1,f1为100Hz。

    5. 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;
      

      在这里插入图片描述

  2. 方波函数
    在MATLAB中,使用函数square得到方波函数,该函数的调用格式为:

    1. x=square(t):类似于sin(t),产生周期为2*pi,幅值为1的方波

    2. 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)');
      

      在这里插入图片描述

随机函数与三角波函数

  1. 随机函数
    在MATLAB中,函数rand可以生成随机信号,该函数的调用方法如下:

    1. Y = rand(n):返回一个n*n的随机矩阵。如果n不是数量,则返回错误信息

    2. Y = rand(m,n)或Y = rand([m n]):返回一个m*n的随机矩阵

    3. Y = rand(m,n,p,……)或Y = rand([m,n,p,……]):产生随机数组

    4. 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)');
      

      在这里插入图片描述

  2. 三角波函数
    在MATLAB中,函数sawtooth用于产生锯齿波或三角波信号,该函数的调用方法为:

    1. x = sawtooth(t):产生周期为2pi,振幅从-1至1的锯齿波。在2pi的整数倍处值为-1至1,这一段的波形斜率为1/pi

    2. 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

  1. 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)');
    

    在这里插入图片描述

  2. diric函数
    函数diric用于产生函数Dirichilet或周期函数Sinc,其调用格式如下:
    y=diric(x,n):返回一个大小与x相同的矩阵,其元素为函数Dirichlet

     clf;
     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

  1. 函数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;
    

    在这里插入图片描述

  2. 函数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

  1. 函数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;
    

    在这里插入图片描述

  2. 函数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]);
    

    在这里插入图片描述

参考文献:

  1. 《精通MATLAB信号处理》,沈再阳编写,清华大学出版社

猜你喜欢

转载自blog.csdn.net/Xiao_Jie123/article/details/111504541