zoukankan      html  css  js  c++  java
  • Matlab数字信号处理

    产生方波

    clear
    t=0:0.01:10;
    subplot(4,1,1)
    f1=square(t);                       %  产生周期为2pi的方波信号
    plot(t,f1)
    axis([0,10,-1.2,1.2])
    subplot(4,1,2)
    f2=square(t,30);               %  产生周期为2pi,占空比为30%的方波信号  
    plot(t,f2)
    axis([0,10,-1.2,1.2])
    subplot(4,1,3)
    f3=square(2*pi*t);                 %  产生周期为1的方波信号
    plot(t,f3)
    axis([0,10,-1.2,1.2])
    subplot(4,1,4)
    f4=square(2*pi*t,80);              %  产生周期为1,占空比为80%的矩形脉冲信号
    plot(t,f4)
    axis([0,10,-1.2,1.2])


    产生三角波,锯齿波

    clear
    t=0:0.01:15;
    subplot(3,1,1)
    f1=sawtooth(t);
    plot(t,f1)
    axis([0,15,-1.2,1.2])
    subplot(3,1,2)
    f1=sawtooth(pi*t);
    plot(t,f1)
    axis([0,15,-1.2,1.2])
    subplot(3,1,3)
    f1=sawtooth(2*pi*t,0.5);
    plot(t,f1)
    axis([0,15,-1.2,1.2])


    angle-相位角求取

    用法

    P=angle(Z)

    函数返回向量Z的相位角P,单位是弧度,若元素向量或数组Z为复数,则相位角位于-pi到+pi之间。


    besselap-besself低通模拟滤波器

    用法

    [z,p,k]=besselap(n)

    函数返回n阶低通模拟besself滤波器的零点z,极点p和增益k。其中,n《=25,且p的长度为n,k为标量,z是一个空矩阵。

    传递函数:


    buttap-Butterworth低通模拟滤波器

    用法

    [z,p,k]=buttap(n)

    函数返回 n阶低通模拟Butterworth滤波器的零点z,极点p和增益k。其中,p的长度为n,k为标量, z是一个空矩阵。


    cheb1ap-切比雪夫1型低通模拟滤波器

    用法

    [z,p,k]=cheb1ap(n,Rp)

    函数返回n阶切比雪夫1型低通滤波器的零点z,极点p和增益k。其中,p的长度为n,k为标量,z是一个空矩阵。Rp指定通带上允许的波纹类型(单位是dB)。


    cheb2ap-切比雪夫2型低通模拟滤波器

    用法

    [z,p,k]=cheb2ap(n,Rs)

    函数返回 n阶切比雪夫2型低通模拟滤波器的零点z,极点p和增益k。其中, z和p的长度为n,若n为奇数,则z的长度为n-1,k为标量。Rs指定阻带上允许的波纹类型(单位是dB)


    时域分析

    conv-计算卷积

    w=conv(u,v)

    函数计算两个信号向量u和v的卷积。其中u的长度为m,v的长度为n,则返回计算结果w长度为(m+n+1)。

    cov-计算协方差

    1.R=cov(X)

    函数返回信号X的协方差矩阵R。X可为向量或矩阵。当X为向量时,cov(X)返回一个包含方差的标量R。当X为矩阵时,cov(X)返回协方差矩阵。

    2.R=cov(X,Y)

    函数求信号X和Y之间的协方差。

    生成一个随机矩阵,然后计算该随机矩阵X的协方差矩阵。


    fft/ifft-快速傅立叶变换/反变换

    1.Y=fft(X)/Y=ifft(X)

    函数按照基2的算法对X进行快速傅立叶变换/反变换。若X是一个矩阵,则对矩阵的每列进行快速傅立叶变换/反变换,返回Y是和X相同大小的矩阵。若X是一个多维序列,则对第一个非单独维进行快速傅立叶变换/反变换。

    2.Y=fft(X,n)/Y=ifft(X,n)

    函数对X进行n点快速傅立叶变换/反变换。当X是一个向量,若X的长度小于n,则先对X进行补零使其长度为n;若X的长度大于n,则对X进行剪切使 其长度为n,最后得到一个长度为n的向量Y。当X是一个矩阵,则利用同样方法对矩阵的每一列进行调整,然后对矩阵的每列进行快速傅立叶变换/反变换,最后 得到一个n行的矩阵Y。

    3.Y=fft(X,n,dim)/Y=ifft(X,n,dim)

    用法同上,dim用来指定进行快速离散傅立叶变换/反变换的维数。

    信号sig中含有正弦信号和噪声信号,对其进行快速离散傅立叶变换。并求出原始信号频率成分。


    >> t=0:0.005:1;
    >> x=sin(2*pi*20*t)+cos(2*pi*60*t);
    >> sig=x+rand(1,length(t));
    >> subplot(1,2,1);
    >> plot(sig(1:60));
    >> title('原始信号图');

    >> ftt_sig=fft(sig,512); %对sig信号进行补零的512点快速离散傅立叶变换
    >> p=ftt_sig.*conj(ftt_sig)/512; %求信号的功率谱密度
    >> f=1000*(0:255)/512; %设置频率的变换范围
    >> subplot(1,2,2);
    >> plot(f,ftt_sig(1:256)) %绘制功率谱密度分布图

    >> title('功率谱密度图')


    fftfilt-基于FFT额FIR滤波

    用法

    y=fftfilt(b,x)

    函数使用叠加法进行基于FFT的FIR滤波。给定系数向量 b对输入向量x进行滤波。

    y=fftfilt(b,x,n)

    函数使用叠加法进行基于FFT的FIR滤波。给定系数向量b对输入向量x进行滤波。n用于决定FFT的长度。


    filtfilt-零相位数字滤波

    用法

    y=filtfilt(b,a,x)

    函数对输入信号 x进行正向和反向处理从而实现零相位数字滤波。b和a指定传递函数的系数, x是输入信号。函数对x进行前向滤波后,再将结果进行反向。


    hilbert-希尔伯特变换

    x=hilbert(xr)

    函数将实序列xr进行希尔伯特变换,返回一个同样长度的复数序列x。若xr是一个矩阵,则对xr矩阵的每列进行希尔伯特变换。

    x=hibert(xr,n)

    函数将实序列xr进行n点希尔伯特变换,返回一个同样长度的复数序列x。对xr进行补零或者去零的操作使其长度为 n。


    impinvar-用冲击响应不变法使模拟滤波器转换为数字滤波器

    用法

    [bz,az]=impinvar(b,a,fs)

    函数在保持冲击响应不变的前提下,将模拟滤波器的传递函数的分子分母b和a转换为数字滤波器的传递函数的分子分母bz和az。fs为对模拟滤波器的采样频率,缺省为1hz。

    [bz,az]=impinvar(b,a,fs,tol)

    方法同上,tol为指定的公差,tol越大,则impinvar函数接近极点的可能性越大,缺省为极点值的0.001。


    residuez-Z反变换

    用法

    [r,p,k]=residuez(b,a)

    函数对有理Z函数进行Z反变换。b和a分别为有理Z函数的分子多项式系数向量和分母多项式系数向量。返回r为留数列向量,p为极点列向量,若分子多项式的阶数大于分母多项式的阶数,则k为展开式中的直接项。


    信号产生

    ones-产生单位阶跃信号

    signal=ones(1,N)

    函数产生一组N点单位阶跃信号signal,长度为N,信号幅值为1。

    生成一个长度为5的单位阶跃信号,信号幅值为1。

    signal=ones(1,5)


    zeros-产生单位抽样信号

    signal=[1,zeros(1,N-1)] 函数产生一组单位抽样信号signal。

    1.生成一组长度为5的单位抽样信号

    signal=[1,zeros(1,5-1)]

    2.生成一个长度为5的单位抽样信号,它在时间轴上延迟2个周期。

    x=zeros(1,5)     x(2)=1


    sawtooth-生成锯齿波/三角波信号

    1.sawtooth(t) 函数对时间变量t产生周期为2pi的锯齿波,幅值在+1到-1间变化。

    2.sawtooth(t,width) 函数对时间变量t产生三角波,width是在0到1之间取值的尺度参数,指定锯齿波的波峰出现的位置。函数在[0,width*2*pi]区间内由-1增大到+1,在[width*2*pi,1]区间内由+1减小到-1。

    width=1时,产生正极性锯齿波,width=0时,产生负极性锯齿波,width=0.5时,产生对称锯齿波。


    square-生成方波信号

    1.x=square(t) 函数对时间变量t产生周期为2pi,幅值为+-1的方波。

    2.x=square(t,duty) 函数是对时间变量t产生指定周期,幅值为+-1的方波。duty是信号为正值的区域在一个周期内所占的比例。

    转自:http://blog.csdn.net/gwh111/article/details/8667041

  • 相关阅读:
    GLSL 变量属性
    php读取大文件的方法
    php 3种常见设计模式
    php类自动装载、链式操作、魔术方法
    统计文件中关键词出现的次数
    python先序、中序、后序排序
    Nginx缓存、压缩配置
    Ninx虚拟主机的配置
    python爬虫代码
    Nginx在安装过程经常出现的问题
  • 原文地址:https://www.cnblogs.com/gladsomeboy/p/4053240.html
Copyright © 2011-2022 走看看