解释代码[row, col] = size(dct); blk_dct = mat2cell(dct,ones(row/8,1)*8,ones(col/8,1)*8); N = row * col / (8 * 8); num_zeroAC = cellfun(@(x) sum(sum(x(2:64)==0)), blk_dct); s_zeroac(:,1) = 1:1:N; s_zeroac(:,2) = reshape(num_zeroAC,[N 1]); s_zeroac = sortrows(s_zeroac,-2); s_zeroac = s_zeroac(:,1);
时间: 2023-05-21 08:02:10 浏览: 86
这段代码的作用是将一个二维的离散余弦变换(DCT)矩阵 dct 分割成若干个 8x8 的小块,然后统计每个小块中系数为 0 的个数,最后按照 0 的个数从大到小排序,返回排序后的小块索引 s_zeroac。其中,size(dct) 返回 dct 的行数和列数,mat2cell(dct,ones(row/8,1)*8,ones(col/8,1)*8) 将 dct 分割成若干个 8x8 的小块,cellfun(@(x) sum(sum(x(2:64)==0)), blk_dct) 统计每个小块中系数为 0 的个数,reshape(num_zeroAC,[N 1]) 将 num_zeroAC 转换成 N 行 1 列的向量,sortrows(s_zeroac,-2) 按照第二列从大到小排序,s_zeroac(:,1) 返回排序后的小块索引。
阅读全文