【发布时间】:2014-12-03 14:05:55
【问题描述】:
我正在 Matlab 中进行运行长度编码,到目前为止,我已经实现了 zigzag 算法并得到了一个数组 RunLengthCoding:
RunLengthCoding =
(32, 6, -1, -1, 0, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0,..., 0)
现在我需要运行长度代码这样我得到:
(0,6) (0,-1) (0,-1) (1,-1) (3,-1) (2,1) (0,0)
这是 (length,value),例如 (0,6) 因为没有 0 而我们的值是 6,那么当我们遇到第一个 0 时我们得到 (1,-1) 因为有一个 0后面的值为-1。
我的尝试:
RunLengthCoding(1)=[]; %to remove first DC component
relMat = [];
N = 0;
for i = 1:length(RunLengthCoding)-1
if RunLengthCoding(i)==0;
if RunLengthCoding(i)==RunLengthCoding(i+1)
N = N + 1;
else
valuecode = RunLengthCoding(i);
lengthcode = N;
relMat = [relMat; lengthcode valuecode];
N = 1;
end
else
relMat=[relMat; 0 RunLength(i)];
end
我知道这不会运行!但这就是我到目前为止所做的事情
【问题讨论】:
-
前三对不应该是 (0,6) (0,-1) (0,-1) 吗?
-
你说得对,我安排好了 :)
标签: matlab run-length-encoding