看板 MATLAB 關於我們 聯絡資訊
如題 run_length = 0; new_index_y 是1*64的矩陣裡面放數字 encoded = []; for i = 1:64 if i < 64 || i ~= 64 if i > 2 || i ==2 if new_index_y(i) == 0 run_length = run_length + 1; %run_length 用來紀錄0的個數 else encoded = [ encoded run_length new_index_y(i) ]; % 若i小於64時,encoded 儲存 run_length 跟 newindex_y run_length = 0; end else encoded = []; end else encoded = [encoded 'EOB']; end end 問題出在倒數第三行 encoded = [encoded 'EOB']; 我希望在 i = 64的時候(也就是迴圈執行到最後一個值) encoded 最後能夠加上三個英文字 EOB EOB 的目的是end of block 就是newindex_y之後都是零的紀錄 因為之後會用 huffmandict 去做 如果用cell似乎就要用兩次? 總之我希望迴圈跑完最後增加英文字 Error說不同型態的資料不能這樣儲存 請問那我要另外令一個陣列嗎? 用cell儲存encoded{1,1}跟最後的encoded{1,2} 會變成前面東西被存進encoded{1,1}{1,1}{1,1}......... 似乎沒辦法直接像是串接矩陣把 EOB 串接在值後面 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.18.14
celestialgod: cell的話,要改成用{}不是用[] 08/18 09:28
celestialgod: 建議preallocate矩陣大小 08/18 09:29
at01076172: 如果要存EOB進去要用cell 08/18 13:20
at01076172: 但可以考慮eob用一種不能出現的狀況,如 [0 0] 08/18 13:20
at01076172: *不能→不可能 08/18 13:21
解決了用cell去存 ※ 編輯: Fugacious (111.251.18.14), 08/18/2015 17:31:23