【问题标题】:Look up value between two matrix在两个矩阵之间查找值
【发布时间】:2014-09-12 03:42:33
【问题描述】:

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

[0 1 2
255 2 2]

和一维矩阵

[0 0 0.1 ....0.5]

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

[0 0 0.1
0.5 0.1 0.1]

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

【问题讨论】:

    标签: arrays matlab image-processing matrix


    【解决方案1】:

    您需要以二维数组的元素作为索引来索引一维数组。现在,MATLAB 的索引从 1 开始,并且您的 2D 索引数组中有区间 [0,255] 中的值,因此您需要在索引之前将 1 添加到它们。因此,假设array1D和array2D分别作为一维和二维数组的变量名,使用这个-

    array1D(array2D+1)
    

    示例

    让我们假设这两个数组的一些值作为演示,好吗?让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,是吗?是的!

    ...

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

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

    【讨论】:

    • 对不起,也许你不明白我需要什么。我需要制作一个新的二维矩阵来映射一维矩阵的值。其中,原始二维矩阵中的值是一维矩阵的索引。例如,2 是原始二维矩阵的值。我将在一维矩阵中查找索引为 2 的值,并将该值放入新的二维矩阵中。感谢您的回复
    • @user3051460 查看示例!
    • @user3051460 如果术语 array 让您感到困惑,请记住您可以将任何 1D 或 2D 或 3D 或 4D 数据表示为数组。因此,二维矩阵可以称为二维数组。
    • 非常感谢迪瓦卡。这就是我需要的
    • @user3051460 很高兴你终于明白了。
    猜你喜欢
    • 2019-10-22
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    相关资源
    最近更新 更多