我有1:1:7范围内的整数键的Matlab对象,例如
[3, 1, 4, 5, 6]
我还有一个7号向量,其中包含每个整数键的关联值,例如
vals = (10, 20, 30, 4000, 50, 60, 70)
使用键作为索引创建值矩阵的最有效方法是什么,例如矩阵
[30, 10, 4000, 50, 60]
(实际上关键对象是6D)。我必须循环吗?
答案 0 :(得分:3)
对于1D矩阵的情况,一般方法可以是:
keys=[3, 1, 4, 5, 6];
vals = [10, 20, 30, 4000, 50, 60, 70]
m=vals(keys)
使用此方法,您可以使用keys
数组中存储的值作为vals
数组的索引。您可以找到有关array insdexing here。
更常见的情况是keys
有n
行(以下示例中为3):
keys=[3, 1, 4, 5, 6;
1 3 2 4 6 ;
7 6 5 4 3];
vals = [10, 20, 30, 4000, 50, 60, 70]
m=reshape(vals(keys(:)),size(keys))
希望这有帮助。
Qapla'
答案 1 :(得分:1)
我认为这应该有效。如果我有问题的话。
inds = [3, 1, 4, 5, 6];
vals = inds;
vals(vals==1) = 10;
vals(vals==2) = 20;
vals(vals==3) = 30;
vals(vals==4) = 4000;
vals(vals==5) = 50;
vals(vals==6) = 60;
是这样的吗?