1. 程式人生 > >matlab驗證線性卷積與圓周卷積的關係

matlab驗證線性卷積與圓周卷積的關係

數字訊號處理實驗

一.線性卷積和圓周卷積的關係

1.線性卷積

   設X1為N1點的有限長序列,X2為N2點的有限長序列(0 < n < N2

   則兩序列的線性卷積為:線性卷積

   線性卷積y1(n)的長度為N2+N2-1

2.圓周卷積

  設有限長序列x(n)和h(n)的長度分別為N1和N2,取N>=max(N1,N2),分別對x(n)和h(n)取N點的DFT,將結果取
N點的IDFT得到y(n)

3.圓周卷積與線性卷積之間的關係

  當有限長序列x(n)和h(n)的長度分別為N1和N2,取N>=max(N1,N2),當N>=N1+N2-1,則線性卷積與圓周卷積相同。

二.使用Matlab驗證其關係

1.子函式編寫

  • cirshiftd.m

`

function yc=circonv(x1,x2,N)
%功能 : 計算圓周卷積
%輸入 : 需計算圓周卷積的序列x1,x2和圓周卷積的點數N
%輸出 : 圓周卷積結果
%判斷兩個序列的長度是否小於N

if length(x1) > N
     error('N must not be less than length of x1');
end
if length(x2) > N
      error('N must not be less than length of x2');
end
x1 = [x1,zeros(1,N - length(x1))];           %填充序列x1使其長度為N1+N2-1
x2 = [x2,zeros(1,N - length(x2))];           %填充序列x2使其長度為N1+N2-1
n =0:1:N-1;

x2 = x2(mod(-n,N)+1);                        %生成序列x2((-n))N
H = zeros(N,N);                              %生成N * N 的零矩陣

for n = 1:1:N
     H(n,:) = cirshiftd(x2,n-1,N);            %該矩陣的k行為 x2(k-1-(n mod N))
end 
yc = x1 * H';                                %計算迴圈卷積

`
  • cirshiftd.m

`

function y = cirshiftd(x,m,N)
%對於序列x直接實現圓周移位
%x:輸入序列長度小於N
%m:移位量
%N:圓長
%y:移位後的序列

if length(x) > N
    error('the length of x must be less than N');
end

x = [x,zeros(1,N-length(x))];
n = 0:1:N-1;
y = x(mod(n-m,N)+1);

`

  • 主函式relation.m

clear all;
n = 0:1:12;
m = 0:1:5;
N1 = length(n);
N2 = length(m);

xn = 0.8.^n;              %生成xn
hn = ones(1,N2);          %生成hn

yln = conv(xn,hn);        %計算線性卷積


ycn = circonv(xn,hn,15);  %計算圓周卷積

nyl = 0:1:length(yln)-1;
ny2 = 0:1:length(ycn)-1;

%圖形顯示時分割視窗命令,把一個視窗分成m行,n列,並指定第i個敞口為當前視窗
subplot(2,1,1);
stem(nyl,yln);                 %繪製散點圖
ylabel('線性卷積');             %Y軸標籤
axis([0,25,0,4]);

subplot(2,1,2);
stem(ny2,ycn);
ylabel('圓周卷積');

%x範圍為0-16  y範圍為0-4
axis([0,25,0,4]);

三.實驗結果

驗證程式中,固定DFT點數為15

      ycn = circonv(xn,hn,15); %計算圓周卷積 
     

改變序列xn的長度

當 n = 0:1:12 時 此時N < N1 + N2 -1 線性卷積與圓周卷積不相等。結果如下圖所示。

當 n = 0:1:5 時,此時N > N1 + N2 -1 線性卷積與圓周卷積相等。結果如下圖所示。

臨界條件 N = N1+N2-1時線性卷積與圓周卷積相等,結果如下

四.實驗結論

通過上述結果,可以得出結論:

       當DFT點數N滿足 N>=N1+N2-1時,圓周卷積與線性卷積相等