James 發問時間: 電腦與網際網路軟體 · 2 0 年前

MATLAB如何用for loop寫convolution

以下是我寫的程式但是都跑不出來

題目是h[n]=1/4(u[n]-u[n-3])和x[n]=u[n]-u[n-10]做convolution

function Out = convolution(a,b)

h=0.25*ones(1,a);

x=ones(1,b);

c=zeros(1,a b-1);

for (k = 1:a b-1)

c(k)=0;

for (j = 1:b)

if (i>j) & (i-j)<a

c(k) = c(k) h(j)*x(a b-k)

end

end

end

有人可以幫我看一下嗎???

1 個解答

評分
  • 老師
    Lv 7
    2 0 年前
    最佳解答

    是否少了加號?

    2006-01-12 10:18:48 補充:

    function Out = convolution(a,b)代表你的函數輸出為 Out但是在函數計算中沒有 Out所以程式執行結束後  根本沒有東西輸出如果c(k)是你計算的結果你必須在程式最後加上 Out=c(k);例如function Out = convolution(a,b)h=0.25*ones(1,a);x=ones(1,b);c=zeros(1,a+b-1);for (k = 1:a+b-1)c(k)=0;for (j = 1:b)if (i>j) & (i-j)<ac(k) = c(k)+h(j)*x(a+b-k)end end endOut=c(k);------------------------------我知道convolution theorem 但是我不知道你在算啥  我看不懂你的程式 (輸入 a b 代表什麼?) 而且程式中應該少了加號(知識+發問好像無法打出加號)  我只是就目前程式的錯誤修改  請參考一般我寫函式的m-file  我都在function宣告後加上註解  例如------------------------------------------------------funtion out=summa2(n)% date: 1/12/2006 寫程式的日期% By Michael Jordan 程式寫作人名字% Input: n  the number you want to calculate 解釋輸入參數的意義% Output: out: calculate the factorial of n  解釋輸出參數的意義程式主體----------------------------------------------------這樣,讀我寫的程式,就知道我的輸入輸出代表。什麼而且利用 help 指令,  就可以查到這個函式的說明 。鍵入 help summa2function 和 程式主體 之間的說明可以顯現  日後很容易查詢

還有問題?馬上發問,尋求解答。