首页 > 解决方案 > 在 Matlab 数组的每一行中索引相同/不同的元素

问题描述

假设我在 Matlab 中有一个IxJ矩阵A,其中包含一些数字(可能包括Inf, -Inf)。

例如,对于I=3and J=6,我可以有

A=  [0    0      Inf -Inf 0   1; 
     5    4      Inf -Inf 6   5;
     Inf -Inf    0    Inf 0   2];

我想构造一个Bsize的矩阵IxJ,使得每一行i从 开始,每次更改一个元素时1添加一个,并将相等的索引分配给相等的元素。两个元素必须被视为相等。同样,必须将两个元素视为相等。+1A(i,:)Inf-Inf

在上面的例子中

B=  [1 1 2 3 1 4;  %
     1 2 3 4 5 1;
     1 2 3 1 3 4];

你能建议如何进行吗?

标签: arraysmatlabmatrix

解决方案


一种简单的方法是使用每行unique'stable'选项的第三个输出:

B = NaN(size(A)); % preallocate
for k = 1:size(A,1)
   [~, ~, B(k,:)] = unique(A(k,:), 'stable');
end

推荐阅读