簡體   English   中英

在 Matlab 數組的每一行中索引相同/不同的元素

[英]Indexing equal/different elements in each row of a Matlab array

假設我在 Matlab 中有一個IxJ矩陣A ,其中包含一些數字(可能包括Inf-Inf )。

例如,對於I=3J=6 ,我可以

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

我想構造一個大小為IxJ的矩陣B ,使得每一行i1開始,每次A(i,:)的元素更改時添加+1 ,並將相等的索引分配給相等的元素。 兩個Inf元素必須被視為相等。 同樣,必須將兩個-Inf元素視為相等。

在上面的例子中

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

你能建議如何進行嗎?

一種簡單的方法是使用unique的第三個 output 和每行的'stable'選項:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM