David 發問時間: 電腦與網際網路程式設計 · 10 年前

關於Matlab寫程式遇到的問題~

我在寫程式中,遇到幾段我實在想不通,或著找不出答案的地方,請各位先進和大大們給予指導

1.有一部分,是要寫我有個2x2的像素區塊;假設左上角是b1,右上角是b2,左下角是b3,右下角是b4

我要計算每個像素對的差值d;d1=b1-b2ˋd2=b1-b3ˋd3=b1-b4

我朋友原本事和我這樣說

for k=1:3

d(k)=abs(b(k)-b(k+1));

不過我發現有錯誤;且那樣寫不知道為什麼,也不是變成d1=abs(b1-b2)是整個想法都有錯??

2.有一段,需要將上面計算出來的結果,分配到兩個相鄰的像素上,成為新的像素對;而且原本上面計算出來有三種結果,所以下面的判斷式,必須分別各做一次,並把結果存起來給更下面計算用,

原公式如下

圖片參考:http://it360.tw/forum/forum_uploads/images/AuthorI...

PS:還有公式裡面的取上限和取下限,我也不知道要怎麼寫

3.MSE這部分要怎麼寫?

圖片參考:http://it360.tw/forum/forum_uploads/images/AuthorI...

1 個解答

評分
  • 10 年前
    最佳解答

    1.

    在d(k)=abs(b(k)-b(k+1)); 不應該用b(k)因為你都要減b1,所以應該改成b(1)

    這樣得到的答案就對了,如果你還是覺得錯的話,可能是你把它計算的方向看錯了

    以2x2的矩陣來說,他計算的順序應該是(1,1) → (2,1) → (1,2) → (2,2)才對不是(1,1) → (1,2) → (2,1) → (2,2)

    2.

    我只幫你寫第一個判斷式後面的就靠你自己努力囉

    if Frem(i) > b && abs(Frem(i) - b) <= t/2

    if P(i) > P(i+1)

    P'(i) = P(i) - ceil(abs(Frem(i) - b) / 2);

    P'(i+1) = P(i+1) - floor(abs(Frem(i) - b) / 2);

    else

    P'(i) = P(i) - floor(abs(Frem(i) - b) / 2);

    P'(i+1) = P(i+1) - ceil(abs(Frem(i) - b) / 2);

    end

    end

    在Matlab裡面上限就是無條件進位使用ceil,下線就是無條件捨去使用floor就可以了

    3.

    MSE簡單來說就是兩個的差值平方取平均,不要想的太難

    取平均的部分用mean就可以了,由於你是二維的所以必須平均兩次

    參考資料: 自己
還有問題?馬上發問,尋求解答。