我目前有一个包含预定义值的单元格数组的向量 . 这些值的数量和内容应该可以变化:
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 回答
这很简单:
唯一需要注意的是
mat
中的每个数字元素必须是整数,并且介于1和names
中的元素数之间 .说明:
mat
用作线性索引 . 线性索引时的一般规则是,值按列顺序从源数组中获取(正常情况下),但形状与索引数组的形状相同 .Later Edit ,感谢Luis Mendo:除了索引数组的单例维度外,此规则有效 . 要强制执行此极端情况的规则,可以使用更精细(更耗时)的表单: