[問題] DCT轉換實作已回收

看板MATLAB作者 (隱鬼 桀)時間14年前 (2011/06/20 00:16), 編輯推噓1(109)
留言10則, 6人參與, 最新討論串1/2 (看更多)
不好意思 我在作DCT轉換時遇到問題了(有爬過相關文及網路上的論壇 所以想請教版上各位高手 問題是這樣的: 我要對一張512*512的圖(raw檔)作DCT轉換 再以8*8的矩陣做量化 反量化 再作IDCT 就是作JPEG影像壓縮 但是不能使用dct2等funtion call 於是我參考了這個網址的程式碼 http://www.programmer-club.com.tw/ShowSameTitleN/cb/13866.html 試著把它轉成MATLAB的格式寫法 我輸入程式碼如下: f=fopen('Lena.raw','r'); % 讀檔 % fid=fread(f,[512,512],'uint8') ; for x=0;x<64;x++ % 把512*512切成64個8*8的block (X軸)% for y=0;y<64;y++ % 把512*512切成64個8*8的block (Y軸)% sum=0; for u=0;u<8;u++ % 8*8的block裡面X軸方向的pixel % for v=0;v<8;v++ % 8*8的block裡面Y軸方向的pixel % sum+=fid [u][v]*cos((2x+1)*u*pi/16)*cos((2y+1)*v*pi/16); % DCT % 寫到這行按下enter準備寫下一行 卻出現這個錯誤訊息: ??? sum+=fid[u*8+v]*cos((2x+1)*u*pi/16)*cos((2y+1)*v*pi/16); | Error: The expression to the left of the equals sign is not a valid target for an assignment. 請問可以告訴我是架構錯了還是算式寫錯了嗎? JEPG的原理還有基本的作法我已經知道了(參考的網站講解的很清楚 只是在寫for迴圈有很大的問題 請各位高手指教, 感激不盡!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.210.250

06/20 05:12, , 1F
中括號和+=是c在用的...這是matlab
06/20 05:12, 1F

06/20 11:02, , 2F
樓上XD
06/20 11:02, 2F

06/20 13:47, , 3F
for 的語法也不是這樣
06/20 13:47, 3F

06/20 19:41, , 4F
你應該是走錯版了
06/20 19:41, 4F

06/21 01:24, , 5F
我知道matlab和C的用法不同 那個網站只是參考用的code
06/21 01:24, 5F

06/21 01:28, , 6F
所以才請教各位在matlab要怎麼寫才能跑出相同的結果
06/21 01:28, 6F

06/21 01:31, , 7F
呃....也太懶了吧,網路資源這麼多,硬是要伸手牌= =
06/21 01:31, 7F

06/21 01:37, , 8F
誤會了 我沒有要現成的 我只想知道for迴圈正確寫法
06/21 01:37, 8F

06/21 01:38, , 9F
我知道原理可以自己寫 只是格式錯了也沒辦法跑結果出來
06/21 01:38, 9F

06/21 19:50, , 10F
去查一下matlab 的for 迴圈怎麼寫, 應該就解決了
06/21 19:50, 10F
文章代碼(AID): #1D_Y3rHd (MATLAB)
文章代碼(AID): #1D_Y3rHd (MATLAB)