精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解數字信號處理之卷積運算

FPGA開源工作室 ? 來源:CSDN技術社區 ? 作者:大熊背 ? 2021-05-02 09:39 ? 次閱讀

1.數字信號處理原理

線性系統中,信號只能以乘以一個常數之后再相加的方式進行組合。例如,一個信號不能直接乘以另外一個信號。如下圖所示,根據給出三個信號:x0[n],x1[n],x2[n]相加得到最終的信號x[n]。通過相乘和相加的形式進行信號的組合被稱為信號的合成。

與信號合成相反的步驟,叫做信號的分解。即把原始信號分解為兩個或多個信號相加。信號的分解要比信號合成要復雜些。試想,假設我們把15和25相加,那么我們只能得到40,;相反,如果我們把40分解成兩個或多個數字的相加,那么這種分解會有無數種形式,比如1+39,2+38,-30.5+60+10.5。

8c6f643a-9d17-11eb-8b86-12bb97331649.png

圖1

數字信號處理中,最為關鍵的步驟是信號的疊加。假設有如下圖的輸入信號x[n],經過一個線性系統之后,輸出信號為y[n]。輸入信號可以分解為多個更為簡單的信號:x1[n],x2[n],x3[n],這些被稱為輸入信號分量。之后把各個輸入信號分量單獨的輸入到線性系統中,產生與之對應的輸出信號分量:y1[n],y2[n],y3[n]。原始的輸入信號經過線性系統之后,得到的輸出信號y[n]即為各個輸出信號分量的合成。線性系統中,通過這種方式獲得的輸出信號和原始信號直接通過系統得到的輸出結果是一樣的。正因為如此,任何復雜的數字信號,我們應該把它分解為更為簡單的輸入信號分量,經過線性系統后把輸出信號分量進行合成即為最終的輸出信號。但是,如果分解的輸入信號不夠簡單,那么這樣與分解之前的效果是一樣的,需要復雜的計算。

假設你需要計算2014乘以4的結果,我們可以這樣進行計算:把2014分解為2000+10+4,分解的系數分別乘以4再相加即為最終的輸出結果。這種方法比直接把兩個數相乘要簡單得多。

8ca07b60-9d17-11eb-8b86-12bb97331649.png

圖2

2.卷積

脈沖分解

脈沖分解是卷積的基礎。如下圖所示,N個采樣信號經過脈沖分解之后,形成N個信號分量,每個信號分量只包含原始信號的某一個采樣點信號,而其他采樣點的值為0。假若某個信號只有一個非零點,其他各點數值均為0,那么這個信號被稱為脈沖信號。

8d0eb062-9d17-11eb-8b86-12bb97331649.png

圖3

脈沖函數

Delta函數用希臘字母表示為o[n]。delta 函數是一個歸一化的脈沖信號,即在采樣點零點位置其值為1,其他采樣點位置各點數值均為0。

脈沖反應

當線性系統中輸入信號為delta函數時,其輸出的信號稱為脈沖反應。如下圖所示。如果兩個不同的線性系統,當輸入信號均為delta函數時,其輸出分脈沖反應也是不同的。就像離散數字信號中,用x[n]、y[n]分別表示輸入信號和輸出信號,脈沖反應使用h[n]表示。當然,你也可以使用其他的符號表示,比如f[n]等。

任何脈沖信號都可以看作是脈沖函數的平移和縮放。例如,假設信號a[n]只在采樣點8的位置有輸入,且其輸入值為-3,這就相當于把delta函數平移到8的位置,在乘以-3.用公式表示為:a[n] = -3 o[n-8]。假如delta函數的脈沖反應為h[n],那么a[n]的脈沖反應為-3h[n-8]。

卷積就像數學的加減乘除一樣,是一種形式化的數學運算。數學運算中輸入兩個數得到第三個數,卷積則是輸入兩個信號產生第三個信號。卷積被廣泛應用于統計和概率中。在線性系統中,卷積描述的是輸入信號,脈沖反應和輸出信號三者之間的關系。

8d17b720-9d17-11eb-8b86-12bb97331649.png

圖4

上圖描述的是卷積應用于線性系統的示意圖。輸入信號x[n]進入有脈沖反應h[n]的線性系統,產生輸出信號y[n]。用公式表示為:x[n]*h[n] = y[n]。

3.卷積運算

卷積可以從輸入信號的角度理解:輸入信號的每一個采樣點是如何貢獻于多個輸出信號采樣點,即每一個輸入信號分量進入線性系統之后,都將產生多個平移和縮放版本的脈沖反應,輸出結果即為每個信號分量對應的平移和縮放版的脈沖反應進行合成;從輸出信號的角度理解:每一個輸出信號的采樣點是如何從眾多輸入信號采樣點獲取信息。即對于每一個輸出信號,都將由多個輸入信號貢獻其脈沖響應,輸出結果即為對應脈沖響應的線性加權。

這兩個理解只是對卷積運算的不同角度的理解,其結果都是一樣的。

從輸入信號的角度理解

8d2695c4-9d17-11eb-8b86-12bb97331649.png

圖5

上圖是一個簡單的卷積計算。輸入信號x[n]有九個點,輸入一個有四個脈沖反應h[n]的線性系統中,得到9+4-1輸出信號y[n]。用數學術語表示為:x[n]卷積h[n]輸出結果y[n]。以第一種角度理解卷積:分解輸入信號,把輸入信號分量通過線性系統,然后把每一個輸出分量進行合成。在這個例子中,輸入信號的每一個采樣點都將產生一個平移和縮放版的脈沖反應,輸出信號即把這些平移和縮放版的脈沖反應疊加生成最終的輸出信號y[n]。其具體的計算過程如下圖所示:

8d353750-9d17-11eb-8b86-12bb97331649.png

圖6

圖6:輸入信號中的每一個分量都將產生一個平移和縮放版的脈沖反應。即用方形所表示的脈沖反應結果。除了方形之外的所有點起數值均為0.

假設我們從輸入信號的第四個采樣點x[4]開始。這個采樣點的下標為4,其值為1.4。當輸入信號分解之后,這個采樣點可以用脈沖函數表示為:1.4 o[n-4]。經過線性系統之后,該采樣點所對應的輸出信號分量為1.4h[n-4]。如上圖中間位置圖像所示。注意到輸出信號分量脈沖反應乘以1.4,并把采樣點右移到下表為四的采樣點。0-3,8-11各點數值均為0.

上圖中方塊形狀表示的即為平移和縮放的脈沖反應數值,鉆石形狀的點其值為0.

當輸入信號是四個采樣,經過有九個點的脈沖反應線性系統,其輸出的結果與上圖所示的方法結果相同。

8d6733c2-9d17-11eb-8b86-12bb97331649.png

圖7

8d9503ba-9d17-11eb-8b86-12bb97331649.png

圖8

上述兩種計算方法結果相同,揭示了卷積的一個重要性質:卷積的交換律。即a[n]*b[n]=b[n]*a[n]。即卷積并不關心哪個信號是輸入信號哪個信號是脈沖反應。

假設輸入信號為{1,2,3,4,1,2,3,4,5};脈沖反應為:{2,3,1,4};則卷積計算過程相當于如下所示,每一個輸入信號分量分解為單個脈沖函數,經過四個點的h[n]線性系統之后,其輸出結果即為h[n]+2*h[n-1]+3*h[n-2]+4*h[n-3]+ h[n-4]+2*h[n-1-5]+3*h[n-6]+4*h[n-7]+5h[n-8]。

8d9f89de-9d17-11eb-8b86-12bb97331649.png

圖9

8e1b01cc-9d17-11eb-8b86-12bb97331649.png

圖10

從輸入信號角度理解卷積代碼示例:

#include《math.h》#include《stdio.h》#include《stdlib.h》 int main(){ int InputSignal[9] = {1,2,3,4,1,2,3,4,5}; int ImpulseCorres[4] = {2,3,1,4}; int OutPut[12] = {0}; int i,j; //input view for(i = 0;i 《 9;i++) { for(j = 0;j 《 4;j++) OutPut[i+j] = OutPut[i+j]+InputSignal[i]*ImpulseCorres[j]; } for(i = 0;i 《 12;i++) { printf(“%d ”,OutPut[i]); } return 0;}

從輸出信號的角度理解

從輸出信號角度理解卷積,分析的是每一個輸入信號的采樣點是如何影響眾多輸出信號的采樣點。而從輸出角度理解卷積,分析的是輸出信號的每一個采樣點是由哪些輸入信號影響的。這種方式對數學角度和實踐應用角度理解卷積都相當有作用。用公式表示即為:y[n]=其他變量的組合。換句話說,輸出信號采樣點n等于眾多輸入信號和脈沖反應的線性組合。

從如圖6可以看出,單個輸出信號是如何受到眾多輸入型號的影響的。假設我們以y[6]為例,在圖6中找到在n=6的位置,九個輸入信號中有哪些數值為非零的采樣點作用于該位置。由圖可以看出五個輸入信號在n = 6的位置其數值為0,只有四格輸入信號作用于n = 6的時候其數值不為零。分別是x[3],x[4],x[5],x[6]。y[6]的最終結果即為這四個輸入信號作用單獨作用于線性系統的后輸出信號分量之和。即y[6] = x[3]*h[3]+x[4]*h[2]+x[5]*h[1]+x[6]*h[0]。

圖11,從輸出信號角度理解卷積,其相當于一個卷積機器。如圖所示,假設輸入信號x[n],輸出信號y[n], 虛線方框里表示的是卷積機器,可以從左到右從右到左自由移動。卷積機器放置的位置應該與我們需要求得輸出信號采樣點對其,輸入信號的四個采樣點進入到卷積機器,四個采樣點的數字分別于其對應的脈沖反應相乘,再把其乘積相加。例如為了計算y[6],需要把x[3],x[4],x[5],x[6]四個輸入信號輸送到卷積機器。相應的,為了計算y[7],卷積機器必須右移一位到采樣點7的位置,這樣,進入到卷積的四個信號分別是x[4],x[5],x[6], x[7],如此循環直到所有輸出信號分量被計算完成。

8e419b48-9d17-11eb-8b86-12bb97331649.png

圖11

卷積機器中脈沖反應排列順序是相當重要的。卷積機器中的脈沖反應與原始的脈沖反應做了一個鏡像的翻轉。為什么需要翻轉呢?

即假設我們計算y[4]的輸出結果,由上圖可知y[4] = x[4]*h[0]+x[3]*h[1]+x[2]*h[2]+x[1]*h[3]+x[0]*h[4]。即當前輸入信號點輸入到線性系統對應的輸出結果是當前信號和之前各個信號對當前點的脈沖反應的一個線性加權。如公式所述,為了計算y[4]的結果,我們必須把輸入x[0],x[1],x[2],x[3],x[4]作用在n = 4的位置的脈沖響應進行線性加權。也就是說,當x[0]進入系統的時候,在n = 4的位置對應的脈沖反應為h[4],其輸出為x[0]*h[4],當x[1]進入系統后,在n = 4的位置對應的脈沖反應為h[3],其輸出結果為x[1]*h[3]以此類推。由此可以看出,輸出信號的每一個分量都是有收到輸入信號影響的權重線性組合,其權重恰好是脈沖反應的鏡像翻轉對應的權重值。這也就是為什么卷積公式中需要把輸入信號進行翻轉在進行線性疊加的原因。

假設有N個點的輸入信號x[n],采樣點從0-N-1,有M個點,脈沖反應為h[n]的線性系統,信號點從0-M-1。則這兩個信號的卷積將輸出有N+M-1個采樣點的信號,下標從0-N+M-2。用公式表示為:

8e7a6784-9d17-11eb-8b86-12bb97331649.png

從輸出信號角度理解卷積代碼示例:

#include《math.h》#include《stdio.h》#include《stdlib.h》 int main(){ int InputSignal[9] = {1,2,3,4,1,2,3,4,5}; int ImpulseCorres[4] = {2,3,1,4}; int OutPut[12] = {0}; int i,j; //output view for(i = 0;i 《 12;i++) { OutPut[i] = 0; for(j = 0; j 《 4;j++) { if((i-j)《0) continue; if((i-j)》8) continue; OutPut[i] += ImpulseCorres[j]*InputSignal[i-j]; } } for(i = 0;i 《 12;i++) { printf(“%d ”,OutPut[i]); } return 0; }

4.圖像中的卷積

假設二維函數I和H,對應的卷積操作可以表示為:

8e8fdb28-9d17-11eb-8b86-12bb97331649.png

也可以表示為:

8ec193c0-9d17-11eb-8b86-12bb97331649.png

應用于圖像領域時,其卷積公式也可以表示為:

8ecdb2e0-9d17-11eb-8b86-12bb97331649.png

當濾波函數H*(I,j) = H(-I,-j)進,H(I,j)進行了180度旋轉之后,其結果與線性濾波時一樣的。

圖像中的線性濾波可以表示為:

8ed8b956-9d17-11eb-8b86-12bb97331649.png

其原理為:

8ef1aa24-9d17-11eb-8b86-12bb97331649.png

由兩者的公式可以看出,線性濾波其實是把濾波函數進行180度旋轉之后進行卷積的結果。

以待吧!
編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數字信號處理

    關注

    15

    文章

    559

    瀏覽量

    45801
  • 卷積
    +關注

    關注

    0

    文章

    95

    瀏覽量

    18499

原文標題:數字信號處理之卷積

文章出處:【微信號:leezym0317,微信公眾號:FPGA開源工作室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    adc與數字信號處理的關系

    在現代電子系統中,模擬信號數字信號之間的轉換是至關重要的。模數轉換器(ADC)和數字信號處理(DSP)是實現這一轉換的關鍵技術。 1. ADC的基本概念 模數轉換器(ADC)是一種將
    的頭像 發表于 10-31 10:50 ?232次閱讀

    數字信號和模擬信號的特點及應用

    引言 數字信號和模擬信號是兩種基本的信號類型。數字信號是由離散的數值組成的信號,通常用于數字設備
    的頭像 發表于 08-25 15:53 ?916次閱讀

    數字信號是什么信號的組合

    數字信號是一種由數字值序列組成的信號,它在通信、計算機、電子和自動化等領域具有廣泛的應用。數字信號的組合涉及到許多方面,包括數字信號的產生、
    的頭像 發表于 08-11 10:47 ?715次閱讀

    數字信號包括哪些 數字信號的特點是什么

    數字信號是一種以數字形式表示的信號,它在現代通信和信息技術中扮演著重要的角色。 數字信號的類型 二進制信號 :最基本的
    的頭像 發表于 08-11 10:44 ?1655次閱讀

    數字信號處理與通信原理之間的關系

    數字信號處理(Digital Signal Processing,簡稱DSP)和通信原理是信息科學領域中兩個密切相關的領域。它們在理論和應用層面都有很多相互聯系和相互依賴的地方。 在現代通信系統中
    的頭像 發表于 08-09 09:35 ?637次閱讀

    圖像處理中的卷積運算

    卷積運算是圖像處理中一種極其重要的操作,廣泛應用于圖像濾波、邊緣檢測、特征提取等多個方面。它基于一個核(或稱為卷積核、濾波器)與圖像進行相乘并求和的過程,通過這一操作可以實現對圖像的平
    的頭像 發表于 07-11 15:15 ?1881次閱讀

    模擬信號可以通過什么變成數字信號

    模擬信號數字信號信號處理領域的兩種基本類型。模擬信號是連續變化的信號,而
    的頭像 發表于 06-03 10:48 ?1480次閱讀

    數字信號采集的基本原理有哪些

    引言 數字信號采集技術是將模擬信號轉換為數字信號的過程,廣泛應用于通信、音頻處理、視頻處理、醫療設備等領域。
    的頭像 發表于 05-31 14:19 ?1085次閱讀

    數字信號采集的主要步驟是什么

    數字信號采集是將模擬信號轉換為數字信號的過程,以便計算機或其他數字設備能夠處理和分析。這個過程對于許多應用領域非常重要,如音頻
    的頭像 發表于 05-30 16:31 ?785次閱讀

    數字信號處理器的特點、作用及種類

    隨著信息技術的飛速發展,數字信號處理器(Digital Signal Processor,簡稱DSP)作為數字信號處理的核心設備,在通信、音視頻、自動控制等領域發揮著越來越重要的作用。
    的頭像 發表于 05-22 18:20 ?2332次閱讀

    verilog實現卷積運算

    在Verilog中實現卷積運算,你可以使用以下示例代碼。這里假設輸入數據是有符號8位數,輸出數據也是有符號8位數。卷積在數字信號處理中通常指的是兩個序列的逐元素乘積的和,也就是點乘。
    發表于 03-26 07:51

    什么是數字信號?什么是模擬信號?試舉例說明

    數字信號是一種離散的、非連續的信號,它以二進制編碼的形式來表示信息。在數字信號中,信息以一系列離散樣本的形式存在,每個樣本都有固定的幅度和時間間隔。數字信號是用來傳輸和
    的頭像 發表于 02-02 14:10 ?5839次閱讀

    數字信號處理信號與系統區別

    數字信號處理信號與系統是兩個很重要的概念。雖然它們都涉及到信號處理和分析,但在很多方面有著不同的特點和應用。本文將詳細探討
    的頭像 發表于 01-18 09:30 ?3403次閱讀

    數字信號與模擬信號的優缺點簡述

    數字信號與模擬信號的優缺點簡述 數字信號和模擬信號是信息傳輸中常見的兩種形式。 首先,我們需要了解數字信號和模擬
    的頭像 發表于 12-25 11:21 ?3585次閱讀

    信號、系統和數字信號處理知識整理

    信號、系統和數字信號處理知識整理
    發表于 12-08 10:47 ?567次閱讀
    <b class='flag-5'>信號</b>、系統和<b class='flag-5'>數字信號</b><b class='flag-5'>處理</b>知識整理