arrays - 在 Matlab 数组的每一行中索引相同/不同的元素
问题描述
假设我在 Matlab 中有一个IxJ
矩阵A
,其中包含一些数字(可能包括Inf
, -Inf
)。
例如,对于I=3
and J=6
,我可以有
A= [0 0 Inf -Inf 0 1;
5 4 Inf -Inf 6 5;
Inf -Inf 0 Inf 0 2];
我想构造一个B
size的矩阵IxJ
,使得每一行i
从 开始,每次更改一个元素时1
添加一个,并将相等的索引分配给相等的元素。两个元素必须被视为相等。同样,必须将两个元素视为相等。+1
A(i,:)
Inf
-Inf
在上面的例子中
B= [1 1 2 3 1 4; %
1 2 3 4 5 1;
1 2 3 1 3 4];
你能建议如何进行吗?
解决方案
一种简单的方法是使用每行unique
的'stable'
选项的第三个输出:
B = NaN(size(A)); % preallocate
for k = 1:size(A,1)
[~, ~, B(k,:)] = unique(A(k,:), 'stable');
end
推荐阅读
- html - 文本阴影不会在 DIV 内触发,但会在 BODY 中触发
- angular - Angular 9 中的 PWA 实现
- ios - PanGesture 事件干扰洗涤器清理事件
- android - android studio logcat中字母的含义是什么?
- laravel - Laravel 6.2 whereHasMorph 没有返回预期值
- haskell - 计算 `map 的类型。文件夹`
- ios - Expokit:未定义的方法“target_installation_results”
- javascript - 获取对象数组,然后将其显示在我的组件中
- ios - 添加自定义弹出窗口不会填充完整视图 iOS、Swift
- sql - 如何使用实体框架更新多对多表