创建一个向量,其值对应于单独的矩阵

Mac*_*ine 2 arrays matlab matrix

使用MATLAB,我想创建一个新的向量,其中原始向量中的值被另一个矩阵中的相应数字替换.

具体来说,我有一个大的向量(30,000 x 1),其中每个单元格中的各个值对应于大脑中的位置(range: 0 - 166).这些值在载体上有些随机分布(它们对应于大脑位置).运行实验后,我现在想用我通过实验计算的值替换这些值的每个实例.这些值存储在相应的矩阵中(167 x 2):第一列包含原始矩阵的值,(0 - 166)第二列包含我想要替换原始值的新值(0 - 6).因此,例如,如果值1505我的实验中的得分相关联,我想1505原始矩阵中的a 替换每个实例.

原始载体: [1; 1; 1; 1; 2; 2; 2; 2; 1; 1; 1; 1; 1; 1; 2; 2; 2; 2; ...]

单位矩阵: [0 0; 1 4; 2 5; 3 2; ...]

新矢量: [4; 4; 4; 4; 5; 5; 5; 5; 4; 4; 4; 4; 4; 4; 5; 5; 5; 5; ...]

有没有简单的方法来解决这个问题?

谢谢

Ras*_*hid 5

originalMatrix = [1; 1; 1; 1; 2; 2; 2; 2; 1; 1; 1; 1; 1; 1; 2; 2; 2; 2; 0; 3];
identityMatrix = [0 0; 1 4; 2 5; 3 2];
[~,ind] = ismember(originalMatrix,identityMatrix(:,1));
map = identityMatrix(:,2);
result = map(ind);
Run Code Online (Sandbox Code Playgroud)

编辑

我不断收到这个错误:"下标索引必须是真正的正整数或逻辑."

这是因为某些值中originalMatrix没有相应的值identityMatrix.

所以你可以忽略它们,

ind(ind==0) = [];
Run Code Online (Sandbox Code Playgroud)