• 胡说八道(24.6.3)— 数字信号处理


            上回书说到了从模拟世界向数字世界的途径——采样和量化,但是,更加具体的系统模型究竟是什么样的呢?今日偶得一图,甚好!

            这张图很完美的描述了数字信号处理,包括了防混叠滤波器(前置滤波器),AD转换器,DSP(digital signal processor),DA转换器,平滑滤波器(后置滤波器)。这些设备我会在后续专门讲讲,大家现在只需要有浅浅的概念就行了。

            接下来,紧急插播一条关于δ(n)采样序列的用法。你一直说冲激序列能够采样,那它咋才呢?看看下面这图。

            理想的对模拟信号进行采样,就是服从的这个公式。

             进入到今天的正题,通信行业中的两大法宝之一——卷积。卷积这个运算平常用不到,但是,就是在滤波这一方面,几乎所有的滤波器都能跟它扯到一星半点的关系。首先,我们要知道卷积的取值范围,假设,一个序列为[0,3],另一个为[0,2],那么它们的卷积长度为6,取值范围[0,5]。简单的说,就是上限与上限加就是上限,下限与下限相加就是下限。不要整其他花里胡哨的。

            谈到卷积,学的好同学,便能想到反褶,平移,相乘和相加这四个步骤。这四步呢,可以总结出一种求卷积的方法,就是经典的列表法,按照这四个步骤,慢慢的列数计算,虽这种方法比较慢,但是这很准确,也容易理解。

            谈谈其他的方法,一个是对位相乘相加法。说简单点,就是多项式相加相乘。

            大家可以用MATLAB验证一下,MATLAB中的卷积函数是conv()函数。这个函数只适用于离散卷积。

            最后一种方法是向量-矩阵相乘法,这是我觉得最好的一种方法。我觉得它也可以叫做斜眼法。

            打个比方,在计算离散卷积时,要求y(1)的值,y(1)=x(0)h(1)+x(1)h(0)。

            这个就是该中方法的向量形式。这种方式也是MATLAB中conv函数最本质的算法。能想出这种算法的人真是个天才。

            接着,刚说咱们可不提倡,打开MATLAB,自编一下func_conv函数。

    func_conv.m

    %卷积——反褶、时移、相乘、相加

    function y = func_conv(x1,x2)

    n1 = length(x1)

    n2 = length(x2)

    y = zeros(1,n1+n2-1)

    k1 = zeros(1,n1+n2)

    k2 = zeros(1,n1+n2)

    for i = 0:n1-1

      for j = 1:n2

        k2(j+i) = x2(j)

        k1(j+i) = x1(i+1)*k2(j+i) 

        y(j+i) = y(j+i)+k1(j+i)

      end

    end

    end

    main.m

    %% 卷积

    m =[1 1 1 1 1]

    n = [1 1 1 1 1]

    figure(1)

    stem(conv(m,n))

    figure(2)

    stem(func_conv(m,n))

    仿真结果:

           本次代码用的是二重循环,按照反褶,平移,相乘,相加这四个步骤进行运算。但是,仔细想想,这样写的代码充满着弊端。当你序列很长的时候,所需要的时间复杂度就变高了,运行时间就要很长了。所以说怎么去优化呢?用斜眼法怎么去编?O.o!敬请期待。

    说了这么多求卷积的方法,咱们聊一下它的哥们——相关,两者公式是一样的。

            其实说到底,就是咱们概率论里的相关系数ρ。它的取值范围就是[0,1]。这里建议大家回头看看,或者上网搜搜。

            欲知后事如何,且听下回分解。OVO!

  • 相关阅读:
    LINUX学习------Linux自动化运维——Kubernetes的pod管理
    以餐厅为例,来谈谈VOC(客户之声)
    如何学好Django?
    直接折半希尔排序
    shiro入门基础
    算法训练 第一周
    axios封装get,post请求, 原生xhr ajax封装同步请求
    搭建VUE前端项目流程——Node.js 、Yarn、npm、Vue、Vite、Webpack
    Wireshark 提示和技巧 | 如何匿名化数据包
    线性表重点操作代码集锦
  • 原文地址:https://blog.csdn.net/2303_76963493/article/details/139604650