利用均方误差matlab从矩阵中提取唯一块

利用均方误差matlab从矩阵中提取唯一块,matlab,Matlab,均方误差(MSE)是一种用于定义两个块之间差异的方法,可按如下方式计算:a和b两个块大小相等 MSE = sqrt(sum(sum((a-b).^2)))/size(a or b) 如果MSE小于给定阈值,则两个块没有区别 给定一个矩阵a,该矩阵已被重塑为包含相同原始数据中的所有块, 其目的是提取MSE小于给定阈值(基于第一个块)的所有块,然后返回这些块的平均值。再次,提取MSE小于给定阈值的第二组块,其中不得再次提取已分配为其他块组一部分的块。更好的是,它必须被删除,以减少搜索时间。依此类推

均方误差(MSE)
是一种用于定义两个块之间差异的方法,可按如下方式计算:
a
b
两个块大小相等

MSE = sqrt(sum(sum((a-b).^2)))/size(a or b)
如果
MSE
小于给定阈值,则两个块没有区别

给定一个矩阵
a
,该矩阵已被重塑为包含相同原始数据中的所有块, 其目的是提取
MSE
小于给定阈值(基于第一个块)的所有块,然后返回这些块的平均值。再次,提取
MSE
小于给定阈值的第二组块,其中不得再次提取已分配为其他块组一部分的块。更好的是,它必须被删除,以减少搜索时间。依此类推,直到矩阵
A
的所有块都被指定为组的一部分。结果矩阵的块应根据组内的块数进行组织,从最大的块数到最小的块数。下面是一个例子:

给定矩阵
A
,其中
A
的大小为2乘14:

A= [1 1  2 2  9 9  4 4  6 6  5 5  3 3 
    1 1  2 2  9 9  4 4  6 6  5 5  3 3];
PS:没有必要块包含相同的数字,只是为了让示例更清楚

块大小为:2乘2

阈值为2

现在,我们提取
MSE
小于从矩阵
A
中的第一个块开始的阈值的所有块。因此,这些模块是:

1 1  2 2  3 3
1 1  2 2  3 3
这些区块的平均值为

  Result= [ 2 2
            2 2];
再说一遍。我们提取
MSE
小于阈值的所有块,但我们需要避免已提取的块,因此第二组块是:

9 9
9 9
    4 4  6 6  5 5  
    4 4  6 6  5 5
该区块的平均值为自身,因此:

Result= [2 2  9 9
         2 2  9 9];
再说一遍。我们提取
MSE
小于阈值的所有块,但我们需要避免已经提取的块,因此第三组块是:

9 9
9 9
    4 4  6 6  5 5  
    4 4  6 6  5 5
街区

3 3 
3 3
不是此组的一部分,即使
MSE
小于阈值,因为已提取为第一组的一部分

这些区块的平均值为:

5 5
5 5
因此,结果应该是:

Result= [2 2  5 5 9 9 
         2 2  5 5 9 9 ];
有什么快速的方法可以应用吗?
PS:数据量巨大,因此需要一种快速的方法来实现。

@Divakar有什么想法吗?@thewaywewalk pleaze,有什么方法可以做到这一点吗?