查找两个矩阵之间的值

时间:2014-09-12 03:42:34

标签: arrays matlab image-processing matrix

我假设我有一个2D矩阵,范围从0到255(大小2x3)和1D矩阵(大小256x1)。其中,1D矩阵存储2D阵列的256个像素值的信息。例如, 二维矩阵

[0 1 2
255 2 2]

和1D矩阵

[0 0 0.1 ....0.5]

我想制作一个新的二维矩阵,在每个像素值上存储一维矩阵的信息。我们可以看到2D矩阵中的2的值为0.1,而255的信息值为0.5。所以我想制作一个矩阵,如

[0 0 0.1
0.5 0.1 0.1]

如何通过MATLAB代码制作该矩阵?

1 个答案:

答案 0 :(得分:2)

您需要使用2D数组的元素作为索引来索引1D数组。现在,MATLAB的索引从1开始,您在2D索引数组中的区间[0,255]中有值,因此您需要在索引之前向它们添加1。因此,假设array1Darray2D分别作为1D和2D数组的变量名,请使用此 -

array1D(array2D+1)

实施例

让我们假设这两个数组的某些值作为demo,不是吗?让array2D包含来自0 to 5的6个像素值(在您的情况下模拟0 to 255),array1D为6个像素中的每一个都有6个元素。输入和代码运行 -

array2D = [
    0 1 2 ;
    5 2 2]

array1D = [105 103 107 102 108 101]

out = array1D(array2D+1)

out =
105     103     107
101     107     107

让我们进行验证。

现在,array1D(1,1)0,因此out(1,1)必须是array1D中的第一个元素,即105,是吗?天啊,是的!

同样,array1D(1,2)1因此,out(1,2)必须是array1D的第二个元素,即103,是吗? YES!

...

array1D(2,1)5因此,out(2,1)必须是array1D的最后一个元素,即101,是吗? YES!

...自己查看其余的输出元素?