首页 文章

Matlab - 使用矩阵作为数组向量的索引

提问于
浏览
1

我目前有一个包含预定义值的单元格数组的向量 . 这些值的数量和内容应该可以变化:

names = {'r1','r2','r3'};

此外,我有一个矩阵,应该作为索引矩阵 . 但是,看起来以下示例的大小也应该是可变的 .

mat = [1 3 3; 2 1 3; 1 1 1];

交付:

1  3  3 
 2  1  3 
 1  1  1

我现在想要创建一个矩阵,其中包含相同矩阵格式的数组的相应值 . 因此,如果mat包含1,则输出应包含名称的第一个值,依此类推 . 最终结果应如下所示:

r1  r3  r3 
r2  r1  r3 
r1  r1  r1

只是为了避免误解:名称的内容仅仅是一个例子 . 后来的特定名称应该匹配,并且不能通过简单地添加每个索引值的r前面来解决它 .

非常感谢您的帮助!

1 回答

  • 5

    这很简单:

    result = names(mat);
    

    唯一需要注意的是 mat 中的每个数字元素必须是整数,并且介于1和 names 中的元素数之间 .

    说明: mat 用作线性索引 . 线性索引时的一般规则是,值按列顺序从源数组中获取(正常情况下),但形状与索引数组的形状相同 .

    Later Edit ,感谢Luis Mendo:除了索引数组的单例维度外,此规则有效 . 要强制执行此极端情况的规则,可以使用更精细(更耗时)的表单:

    result = reshape(names(mat), size(mat));
    

相关问题