作者Fugacious (Fugacious)
看板MATLAB
标题[问题] 不同资料型态回圈储存
时间Mon Aug 17 15:25:35 2015
如题
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
1F:→ celestialgod: cell的话,要改成用{}不是用[] 08/18 09:28
2F:→ celestialgod: 建议preallocate矩阵大小 08/18 09:29
3F:→ at01076172: 如果要存EOB进去要用cell 08/18 13:20
4F:→ at01076172: 但可以考虑eob用一种不能出现的状况,如 [0 0] 08/18 13:20
5F:→ at01076172: *不能→不可能 08/18 13:21
解决了用cell去存
※ 编辑: Fugacious (111.251.18.14), 08/18/2015 17:31:23