Mac*_*ine 2 arrays matlab matrix
使用MATLAB,我想创建一个新的向量,其中原始向量中的值被另一个矩阵中的相应数字替换.
具体来说,我有一个大的向量(30,000 x 1)
,其中每个单元格中的各个值对应于大脑中的位置(range: 0 - 166)
.这些值在载体上有些随机分布(它们对应于大脑位置).运行实验后,我现在想用我通过实验计算的值替换这些值的每个实例.这些值存储在相应的矩阵中(167 x 2)
:第一列包含原始矩阵的值,(0 - 166)
第二列包含我想要替换原始值的新值(0 - 6)
.因此,例如,如果值150
与5
我的实验中的得分相关联,我想150
用5
原始矩阵中的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; ...]
有没有简单的方法来解决这个问题?
谢谢
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)