迴圈卷積和線性卷積的關係
一般訊號處理濾波器:時域資料 與 濾波器係數的線性卷積,但卷積的運算量比較大,所以用頻域的相乘來替代時域卷積,而頻域的相乘等於時域迴圈卷積,所以要有乙個迴圈卷積和線性卷積轉換的過程,
如下matlab例子
x = [3 2 1 2 5];
y = [7 -1 8 5 1];
n = length(x) + length(y) - 1;
x1 = [x zeros(1,n - length(x))];
y1 = [y zeros(1,n - length(y))];
c1 = ifft(fft(x1).*fft(y1));%頻域的padding點乘
c2 = conv(x,y);%時域的線性卷積
c3 = ifft(fft(x).*fft(y));
c4 = cconv(x,y,length(x));
fprintf("result\n");
c1c2
c3 c4
結果:result
c1 =
21.0000 11.0000 29.0000 44.0000 54.0000 18.0000 51.0000 27.0000 5.0000
c2 =
21 11 29 44 54 18 51 27 5
c3 =
39 62 56 49 54
c4 =
39 62 56 49 54
迴圈卷積與線性卷積
迴圈卷積 針對的是兩個長度都為n的序列,對兩個序列做fft,然後再做ifft得到的結果就是迴圈卷積,結果的長度也是n。直接計算步驟 序列a與序列b,長度都是n,新的序列c 1 把b倒過來。翻轉 2 把b向右平移乙個元素。最右側的元素補到左邊。3 計算此時a和b對應元素的積的和。將其加到c的末尾。4 ...
訊號卷積(線性卷積)
從數學上講,卷積就是一種運算。定義函式 f,g 的卷積 f g t 如下 1.連續形式 f g t int f tau g t tau d tau 那這個怎麼理解呢?函式 g t 可以理解為衝擊響應,即乙個衝擊訊號經過乙個線性系統後產生的輸出函式,假設它的影象長成下面這個樣子 在 0 時刻輸入了乙個...
C語言實現線性卷積和圓周卷積
已知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...