Ben*_*ter 1 arrays indexing matlab allocation matrix
我目前有一个包含预定义值的单元格数组的向量.这些值的数量和内容应该可以变化:
names = {'r1','r2','r3'};
Run Code Online (Sandbox Code Playgroud)
此外,我有一个矩阵,应该作为索引矩阵.但是,看起来以下示例的大小也应该是可变的.
mat = [1 3 3; 2 1 3; 1 1 1];
Run Code Online (Sandbox Code Playgroud)
交付:
1 3 3
2 1 3
1 1 1
Run Code Online (Sandbox Code Playgroud)
我现在想要创建一个矩阵,其中包含相同矩阵格式的数组的相应值.因此,如果mat包含1,则输出应包含名称的第一个值,依此类推.最终结果应如下所示:
r1 r3 r3
r2 r1 r3
r1 r1 r1
Run Code Online (Sandbox Code Playgroud)
只是为了避免误解:名称的内容仅仅是一个例子.后来的特定名称应该匹配,并且不能通过简单地添加每个索引值的r前面来解决它.
非常感谢您的帮助!
小智 5
这很简单:
result = names(mat);
Run Code Online (Sandbox Code Playgroud)
唯一需要注意的是,每个数字元素都mat
必须是整数,并且介于1和元素数之间names
.
说明:该mat
作品作为一个线性指标.线性索引时的一般规则是,值按列顺序从源数组中获取(正常情况下),但形状与索引数组的形状相同.
稍后编辑,感谢Luis Mendo:除了索引数组的单例维度外,此规则有效.为了加强对这个角落情况下,一般来说,人们可以使用稍微更复杂(和更耗时)形式:
result = reshape(names(mat), size(mat));
Run Code Online (Sandbox Code Playgroud)