我是靠谱客的博主 无语外套,这篇文章主要介绍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的相对大小决定是凹还是凸。

      复制代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      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用于指定脉冲宽度与整个周期的比例。

      复制代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      %一个连续的周期性矩形的信号频率为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具有相同尺寸的随机矩阵

      复制代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      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之间

      复制代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      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的非周期方波

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    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

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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值为元素的矩阵

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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)

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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。

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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之外)

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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信号处理》,沈再阳编写,清华大学出版社

最后

以上就是无语外套最近收集整理的关于MATLAB信号处理---学习小案例(5)---信号波形的产生的全部内容,更多相关MATLAB信号处理---学习小案例(5)---信号波形内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部