matlab 在使用 mapobj 映射的矩阵中插入新行
matlab insert new row in matrix which is mapped from using mapobj
我的矩阵目前看起来像这样
1 225 230 300
4 333 442 678
7 798 782 128
1 248 842 482
第 1 列是我映射到另一组数字的一系列数字。
例如
KeySet = (1:42)
ValueSet = (333, 222, 4444, 7778 etc etc to 42 numbers)
mapObj = containers.Map(KeySet, ValueSet)
现在我想在我的原始矩阵第 5 列中创建一个新的列,它将根据映射从 ValueSet 填充 - 因此第 1 行第 5 列将为 333,第 2 行第 5 列将为 7778 等等上。
它本质上是从第 5 列到映射的 vlookup。
我猜它看起来像这样
mat(:,5) = mapObj(mat(:,1))
您不能一次查询多个条目的地图对象,我会使用 arrayfun
:
arrayfun(@(ix)mapObj(ix),mat(:,1))
在您的示例中,键集是 1:n,如果情况总是如此,则使用数组而不是映射,它的速度要快得多,并且您可以一次索引多个条目。
我的矩阵目前看起来像这样
1 225 230 300
4 333 442 678
7 798 782 128
1 248 842 482
第 1 列是我映射到另一组数字的一系列数字。 例如
KeySet = (1:42)
ValueSet = (333, 222, 4444, 7778 etc etc to 42 numbers)
mapObj = containers.Map(KeySet, ValueSet)
现在我想在我的原始矩阵第 5 列中创建一个新的列,它将根据映射从 ValueSet 填充 - 因此第 1 行第 5 列将为 333,第 2 行第 5 列将为 7778 等等上。 它本质上是从第 5 列到映射的 vlookup。
我猜它看起来像这样
mat(:,5) = mapObj(mat(:,1))
您不能一次查询多个条目的地图对象,我会使用 arrayfun
:
arrayfun(@(ix)mapObj(ix),mat(:,1))
在您的示例中,键集是 1:n,如果情况总是如此,则使用数组而不是映射,它的速度要快得多,并且您可以一次索引多个条目。