欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 胡说八道(24.6.3)— 数字信号处理

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

2024/10/25 8:18:36 来源:https://blog.csdn.net/2303_76963493/article/details/139604650  浏览:    关键词:胡说八道(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!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com