我在 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
我知道这不会运行!但这就是我迄今为止所管理的