[問題]想請問一個用矩陣做convolution的題目...已回收

看板MATLAB作者 (RK)時間15年前 (2008/10/29 03:14), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
這是題目: 在不使用迴圈的情況下,以矩陣運算的方式,寫 一函數,其功能為兩一維訊號之迴旋運算 (convolution)。 基本上我已經有大致上的程式碼 如下: function output = convkao(X,H) X=randint(1,10,[0,99]); H=randint(1,10,[0,99]);%先設定兩個一維矩陣 n=size(X,2); m=size(H,2); A=flipdim(hankel([zeros(1,m+n-2) X],zeros(1,m+n-1)),1)'; h=[zeros(1,n-1) H zeros(1,n-1)]; output=A*h'; %h' 是h的轉置矩陣 現在卡在 A=flipdim(hankel([zeros(1,m+n-2) X],zeros(1,m+n-1)),1)'; 這行 總是跟我說 Warning: Last element of input column does not match first element of input row. Column wins anti-diagonal conflict. In hankel at 27 有人可以告訴我是錯在哪嗎? 基本上convolution已經做出來了 可是在他跑出結果前 就是會出現那個warning 想了整個晚上 都不知道怎麼改 請各位幫忙一下~謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.114.149 ※ 編輯: RogerKao 來自: 220.134.114.149 (10/29 03:16)

10/29 11:51, , 1F
因為你跑出來的A是錯的,第一個column就錯掉了
10/29 11:51, 1F

10/29 12:13, , 2F
For hankel (C, R),C最後一個element跟R的第一個element
10/29 12:13, 2F

10/29 12:14, , 3F
如果不一樣,hankel會採用C的最後一個element
10/29 12:14, 3F

10/29 12:15, , 4F
並且出現此warning
10/29 12:15, 4F

10/29 12:16, , 5F
因為你是拿兩個亂數產生的vector,當然會不一樣
10/29 12:16, 5F

10/29 22:15, , 6F
可是如果不用亂數跑,自己先設定好vector
10/29 22:15, 6F

10/29 22:16, , 7F
也是會跑出那個訊息出來耶...
10/29 22:16, 7F
文章代碼(AID): #191sISaI (MATLAB)