我假设我有一个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代码制作该矩阵?
答案 0 :(得分:2)
您需要使用2D数组的元素作为索引来索引1D数组。现在,MATLAB的索引从1开始,您在2D索引数组中的区间[0,255]
中有值,因此您需要在索引之前向它们添加1
。因此,假设array1D
和array2D
分别作为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!
...自己查看其余的输出元素?