MATLAB数字信号处理基础

MATLAB数字信号处理基础

1、波形产生函数

函数 说明
square 方波
sawtooth 锯齿波
sinc sinc函数
diric diric函数
rectpuls 非周期方波
tripuls 非周期三角波
pulstran 脉冲序列
chirp 调频余弦波
  • square函数:调用方式如下:

    • x = square(t):产生周期为2pi、幅度最大值为1的方波。

    • x = square(t, duty):产生周期为2pi、幅度最大值为1的方波,duty为占空比。

      用square函数产生周期为1,占空比分别为50%和30%的方波:

      t = 0:0.001:4;
      y1 = square(2*pi*t);
      y2 = square(2*pi*t, 30);
      subplot(1, 2, 1);
      plot(t, y1);
      subplot(1, 2, 2);
      plot(t, y2);
      axis([0, 4, -1.5, 1.5]);
      

MATLAB数字信号处理基础_第1张图片

  • sawtooth函数: 调用方式如下:

    • x = sawtooth(t, width):产生周期为2pi、峰值为1的锯齿波,width表示该位置横坐标与周期的比值。

    用sawtooth函数产生周期为1的锯齿波和方波:

    t = 0:0.001:4;
    y1 = sawtooth(2*pi*t);
    y2 = sawtooth(2*pi*t, 0.5);
    subplot(1, 2, 1);
    plot(t, y1);
    subplot(1, 2, 2);
    plot(t, y2);
    axis([0, 4, -1, 1]);
    

MATLAB数字信号处理基础_第2张图片

  • sinc函数: 调用方式如下:

    • x = sinc(t):产生sinc函数波形。

    用sinc函数产生波形:

    t = -5:0.001:5;
    y = sinc(t);
    plot(t,y);
    axis([-5 5 -1 1]);
    

    MATLAB数字信号处理基础_第3张图片

  • diric函数: 调用方式如下:

    • x = diric(x, n):当n为奇数时,函数周期为2pi;当n为偶数时,函数周期为4pi。

    用diric函数产生波形:

    t = -15:0.05:15;
    y1 = diric(t, 5);
    y2 = diric(t, 6);
    subplot(121);
    plot(t, y1);
    subplot(122);
    plot(t, y2);
    axis([-15 15 -1 1]);
    

    MATLAB数字信号处理基础_第4张图片

  • rectpuls函数: 调用方式如下:

    • x = rectpuls(t, w):产生宽度为w的非周期、单位高度的矩形波。

    用rectpuls函数产生长度为1s,宽度为0.7s的非周期矩形波:

    t = 0:0.01:1;
    y = rectpuls(t, 0.7);
    plot(t, y);
    axis([0 1 -0.2 1]);
    

    MATLAB数字信号处理基础_第5张图片

  • tripuls函数: 调用方式如下:

    • x = tripuls(t, width, s):产生非周期单位高度、width宽度、倾斜度s的三角波。

      用tripuls函数产生长度为1s,宽度为0.6s,倾斜度分别为0和0.9的非周期三角波:

      t = 0:0.01:1;
      y1 = tripuls(t, 0.6, 0);
      subplot(121);
      plot(t, y1);
      y2 = tripuls(t, 0.6, 0.9);
      subplot(122);
      plot(t, y2);
      axis([0 1 -0.2 1]);
      

      MATLAB数字信号处理基础_第6张图片

  • pulstran函数: 调用方式如下:

    • x=pulstran(t,d,’func’):其中参数func取值为gauspuls(高斯调制正弦信号);rectpuls(非周期方波);tripuls(非周期三角波)。该函数产生以d为采样间隔的func指定形状的冲激串;
    • x=pulstran(t,d,’func’,p1,p2):将参数p1和p2传递给func函数;
    • x= pulstran(t,d,p,Fs):向量p表示原始序列,Fs为采样率。对原始序列多次延迟相加得到输出序列。

    用pulstran函数产生三角波冲激串:

    t = 0:0.001:1;
    d= 0:1/3:1;
    y = pulstran(t, d, 'tripuls');
    plot(t, y);
    axis([0 1 1.3 1.75]);
    

    MATLAB数字信号处理基础_第7张图片

  • chirp函数: 调用方式如下:

    • chirp(t,f0,t1,f1):产生线性调频余弦信号。f0和f1分别是0时刻和t1时刻的瞬时频率。
    • chirp(t,f0,t1,f1,method):参数method指定不同的扫频方式,取值方式三种包括:
      Linear线性的
      quadratic二次的
      logarithmic对数的

    用chirp函数产生二次扫频信号,绘出时域波形和时频图:

    t = 0:1/400:1;
    y = chirp(t, 10, 1, 100, 'quadratic');
    plot(t, y);
    spectrogram(y,128,120,128,1000,'yaxis');
    
    axis([0 1 -1 1]);
    

    MATLAB数字信号处理基础_第8张图片

t = 0:1/400:1;
y = chirp(t, 10, 1, 100, 'quadratic');
plot(t, y);
%spectrogram(y,128,120,128,1000,'yaxis');

axis([0 1 -1 1]);

MATLAB数字信号处理基础_第9张图片

2、傅里叶变换函数

函数 说明
fft 计算快速离散傅里叶变换
fftshift 调整fft函数的输出顺序,将零频位置移动到频谱的中心
ifft 计算离散傅里叶反变换
  • fft函数: 调用方式如下:
    • y=fft(x):计算信号x的快速傅立叶变换y。当x的长度为2的幂时,用基2算法,否则采用较慢的分裂基算法。
    • y=fft(x,n):计算n点FFT。当length(x)>n时,截断x,否则补零。
  • fftshift函数: 调用方式如下:
    • y=fftshift(x):如果x为向量,fftshift(x)直接将x的左右两部分交换;如果x为矩阵(多通道信号),将x的左上、右下和右上、左下四个部分两两交换。
  • ifft函数: 调用方式如下:
    • y=ifft(x):计算信号x的傅立叶反变换
    • y=ifft(x,n):计算n点IFFT。如果length(x)>n,以n为长度截短x,否则补零。

3、滤波器分析与实现函数

函数名
conv 求卷积
impz 数字滤波器的冲激响应
zplane 离散系统的零极点图
abs 求幅值
angle 求相角
filter 直接II型滤波器
  • conv函数: 调用方式如下:

    • c=conv(a,b):返回向量a、b的卷积c。
  • impz函数: 调用方式如下:

    • [h,t]=impz(b,a):b、a分别为系统传递函数的分子和分母的系数向量。返回系统(b,a)的冲激响应h和相应的时间轴向量t。
    • [h,t]=impz(b,a,n):返回n点冲激响应。
    • [h,t]=impz(b,a,n,Fs):指定冲激响应采样点间隔1/Fs。Fs为相对频率,缺省值为1。

    计算线性系统(b,a)的冲激响应:

    b = [0.2 0.1 0.3 0.1 0.2];
     a= [1 -1.1 1.5 -0.7 0.3];
    impz(b,a,50);
    

    MATLAB数字信号处理基础_第10张图片

  • zplane函数: 调用方式如下:

    • zplane(z,p):绘制系统零极点图,“o”表示零点,“x” , 表示极点。z,p分别为零点和极点向量。
    • zplane(b,a):b、a分别为系统传递函数的分子和分母系
      数向量。

    计算线性系统(b,a)的零点和极点:

    b = [0.2 0.1 0.3 0.1 0.2];
     a= [1 -1.1 1.5 -0.7 0.3];
     zplane(b, a);
    

    MATLAB数字信号处理基础_第11张图片

  • abs函数: 调用方式如下:

    • y=abs(x):返回复数向量x的幅值向量y。

    绘出一个正弦信号的傅里叶变换的幅度谱:

    t = (0:99)/100;
    x =  sin(2*pi*40*t);
    y = fft(x);
    m = abs(y);
    f = (0:length(y)-1)/length(y)*100;
    plot(f,m);
    

    MATLAB数字信号处理基础_第12张图片

  • angle函数: 调用方式如下:

    • p = angle(h):返回复数向量h的相位向量p。

    绘出方波信号的相频特性:

    t = (0:99)/10000;
    x =  sin(2*pi*t);
    y = fft(x);
    m = angle(y);
    f = (0:length(y)-1)/length(y)*100;
    plot(f,m);
    

    MATLAB数字信号处理基础_第13张图片

  • filter函数: 调用方式如下:

    • y=filter(b,a,x):计算输入信号x经过传递函数分子分母系数向量(降幂排列)为b、a的滤波器后的输出y。
    • [y,zf]=filter(b,a,x):返回最终的状态向量zf。
    • […]=filter(b,a,x,zi):指定滤波器的初始条件zi。

你可能感兴趣的:(物联网数据处理,matlab信号处理)