matlab在矩阵中插入新行,使用mapobj进行映射

时间:2015-01-27 13:13:48

标签: matlab

我的矩阵目前看起来像这样

1      225   230  300   
4      333   442  678
7      798   782  128
1      248   842  482

Coloumn 1是一系列数字,我已将其映射到另一组数字。 例如

KeySet = (1:42)
ValueSet = (333, 222, 4444, 7778 etc etc to 42 numbers)
mapObj = containers.Map(KeySet, ValueSet)

现在我想在我的原始矩阵coloumn 5中创建一个新的coloumn,它将从ValueSet中参考映射填充 - 因此第1行coloumn 5将是333而第2行coloumn 5将是7778,依此类推。 它基本上是从coloumn 5到映射的vlookup。

看起来像我猜的那样

mat(:,5) = mapObj(mat(:,1))   

1 个答案:

答案 0 :(得分:0)

您无法一次查询多个条目的地图对象,我会使用arrayfun

arrayfun(@(ix)mapObj(ix),mat(:,1))

在你的例子中,密钥集是1:n,如果总是如此,那么使用数组而不是地图,它会快得多,你可以一次索引多个条目。