下面给一个参照MPEG提供的方法:
===
function b=zigzag(a)
% 这是参照 University of California 提供的 MPEG 源代码的基础上编制的。...下标从零开始,因为是从MPEG的C代码拷贝过来的
zigzag = [ 0, 1, 8, 16, 9, 2, 3, 10, …
17, 24, 32, 25, 18, 11, 4, 5, …
12, 19...29, 22, 15, 23, 30, 37, 44, 51, …
58, 59, 52, 45, 38, 31, 39, 46, …
53, 60, 61, 54, 47, 55, 62, 63];
zigzag...= zigzag + 1; % 下标加1,符合MATLAB的下标习惯
aa = reshape(a,1,64); % 将输入块变成1×64的向量
b = aa(zigzag); % 对 aa 按照查表方式取元素...b=zigzag(a)
b =
Columns 1 through 12
64 9 2 3 55 17 40 47 54 61 60