[英]Indexing equal/different elements in each row of a Matlab array
假設我在 Matlab 中有一個IxJ
矩陣A
,其中包含一些數字(可能包括Inf
, -Inf
)。
例如,對於I=3
和J=6
,我可以
A= [0 0 Inf -Inf 0 1;
5 4 Inf -Inf 6 5;
Inf -Inf 0 Inf 0 2];
我想構造一個大小為IxJ
的矩陣B
,使得每一行i
從1
開始,每次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.