利用均方误差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,有什么方法可以做到这一点吗?