C語言實現線性卷積和圓周卷積

2021-09-27 13:05:42 字數 830 閱讀 5053

已知x(n)=,求x(n)∗x(n),x(n)⑤x(n),x(n)⑩x(n)

#include

"graphics.h"

#include

#include

#include

#include

//線性卷積**

void

conv

(int x,

int y)

else

if(m>

4||m<0)

else

y[n-1]

+=x[m]

*x[s];}

}}//圓周卷積**,n表示圓周卷積的n

void

cir_conv

(int a,

int b,

int n)}}

void

main()

;int y[10]

=,y_cir5[10]

=,y_cir10[10]

=;//陣列必須賦初值,不然會亂

conv

(x,y)

;cir_conv

(x,y_cir5,5)

;cir_conv

(x,y_cir10,10)

;for

(int i=

0;i<

10;i++

)}

執行結果如下

本程式是對清華大學出版的數字訊號處理(第四版)的題3-10進行c語言實現。

線性卷積與圓周卷積的計算方法

現在很多任務具裡都已經為我們實現好了線性卷積和圓周卷積的函式,所以在實現方面簡單呼叫一下即可。如matlab中,conv用於計算線性卷積,而cconv用來計算圓周卷積 在國內搜了很多計算圓周卷積的例子,居然鮮有人提到cconv函式,而都是人云亦云都抄襲一套自實現函式,真是有點意想不到。下面直接上乾貨...

迴圈卷積和線性卷積的關係

迴圈卷積和線性卷積的關係 一般訊號處理濾波器 時域資料 與 濾波器係數的線性卷積,但卷積的運算量比較大,所以用頻域的相乘來替代時域卷積,而頻域的相乘等於時域迴圈卷積,所以要有乙個迴圈卷積和線性卷積轉換的過程,如下matlab例子 x 3 2 1 2 5 y 7 1 8 5 1 n length x ...

C 實現卷積

來自 include include using namespace std int main 定義卷積核矩陣 其實也是乙個陣列,陣列元素的個數3 3 int const kernel 3 float b kernel kernel 計算卷積輸出矩陣的維數 其實是輸出陣列元素個數的開根號 int c...