Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(matlab)qtdecomp与uint8矩阵一起工作?_Matlab - Fatal编程技术网

(matlab)qtdecomp与uint8矩阵一起工作?

(matlab)qtdecomp与uint8矩阵一起工作?,matlab,Matlab,我还没有完全理解qtdecomp是如何工作的 I = [1 1 1 1 2 3 6 6 1 1 2 1 4 5 6 8 1 1 1 1 10 15 7 7 1 1 1 1 20 25 7 7 20 22 20 22 1 2 3 4 20 22 22

我还没有完全理解
qtdecomp
是如何工作的

I = [1    1    1    1    2    3    6    6
     1    1    2    1    4    5    6    8
     1    1    1    1   10   15    7    7
     1    1    1    1   20   25    7    7
    20   22   20   22    1    2    3    4
    20   22   22   20    5    6    7    8
    20   22   20   20    9   10   11   12
    22   22   20   20   13   14   15   16];

S = qtdecomp(I,2);
disp(full(S));
其结果是:

   4     0     0     0     1     1     2     0
   0     0     0     0     1     1     0     0
   0     0     0     0     1     1     2     0
   0     0     0     0     1     1     0     0
   4     0     0     0     1     1     1     1
   0     0     0     0     1     1     1     1
   0     0     0     0     1     1     1     1
   0     0     0     0     1     1     1     1
在左下4*4矩阵中,块元素的最大值(22)减去最小值(20)是2,因此分解该部分时,它将保持原样

当我在
uint8
矩阵上执行此操作时:

I = uint8([...
     1    1    1    1    2    3    6    6
     1    1    2    1    4    5    6    8
     1    1    1    1   10   15    7    7
     1    1    1    1   20   25    7    7
    20   22   20   22    1    2    3    4
    20   22   22   20    5    6    7    8
    20   22   20   20    9   10   11   12
    22   22   20   20   13   14   15   16]);

S = qtdecomp(I,2/255);
disp(full(S));
答案和以前一样。但当我将
S
更改为以下内容时:

S = qtdecomp(I,1.9/255);
答案是

 4     0     0     0     1     1     2     0
 0     0     0     0     1     1     0     0
 0     0     0     0     1     1     2     0
 0     0     0     0     1     1     0     0
 4     0     0     0     1     1     1     1
 0     0     0     0     1     1     1     1
 0     0     0     0     1     1     1     1
 0     0     0     0     1     1     1     1

我想左下4*4矩阵应该分解,但为什么不分解呢?

matlab在这里做的是当
I
为uint8时,它将阈值乘以255并取整,因此1.9/255计算为2

通过打开
qtdecomp
(按ctrl+D)或的源代码,可以看到这一点。文件末尾附近有一个if/elseif(
params{1}=round(255*params{1});

您应该能够使用
S=qtdecom(I,1/255)
以获取您要查找的结果