[問題] 不同資料型態迴圈儲存

看板MATLAB作者 (Fugacious)時間8年前 (2015/08/17 15:25), 8年前編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
如題 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

08/18 09:28, , 1F
cell的話,要改成用{}不是用[]
08/18 09:28, 1F

08/18 09:29, , 2F
建議preallocate矩陣大小
08/18 09:29, 2F

08/18 13:20, , 3F
如果要存EOB進去要用cell
08/18 13:20, 3F

08/18 13:20, , 4F
但可以考慮eob用一種不能出現的狀況,如 [0 0]
08/18 13:20, 4F

08/18 13:21, , 5F
*不能→不可能
08/18 13:21, 5F
解決了用cell去存 ※ 編輯: Fugacious (111.251.18.14), 08/18/2015 17:31:23
文章代碼(AID): #1LqOnnmk (MATLAB)