EDA365电子论坛网

标题: 找到矩阵中相同元素并且找到它所在的行(或者是位置) [打印本页]

作者: ssduck    时间: 2022-4-15 10:50
标题: 找到矩阵中相同元素并且找到它所在的行(或者是位置)
现在有如下矩阵G,想要知道矩阵G中相同元素是什么并且知道它的位置,应该怎么写比较快一些?我查到了有用tabulate,unique,以及find联合写的函数,有没有更简单的方法?就是一个命令就搞定的
3 k# z0 n" G5 v$ t* nG=[9        10
" q3 V3 o" a8 D+ ^5 H2 a9 h4        5
5 T* L' ]7 n7 @' E7 x: S14        13# y" t: y! ~0 v6 a, T% \% L- ~; N
3        4
- N  ^  P( }$ `; T; z13        127 E& @" `$ ?2 }2 g4 P: g
11        10
6 q3 P4 a& s2 T0 c7        9]
& ?! H. S) W# u
作者: DuBois_1wwe    时间: 2022-4-15 11:11
至少对你这个矩阵,只有两个相同的,只用unique是可以的
; J8 ], A/ {# R+ t: m[a,b1]=unique(G,'first');
  ]/ ]3 A% O( D& b[a,b2]=unique(G,'last');6 u8 u( o  S7 B: s8 p3 y
[a b1 b2]
作者: ononsiiii197    时间: 2022-4-15 14:53
[a b]=ismember(G(:,1),G(:,2));. B; Y+ M; i$ ~7 Z) I: F4 I
[a b]'$ _7 R2 o/ o0 ~" a- ?: d

/ Q: |+ h8 K4 u( G6 F. ?9 u' l& k! k
ans =
) M( ~* M) s* F& D. v' u. B. [
' `4 Y7 q; B2 _" G+ a6 X     1     1     0     0     1     0     0
( _7 j, n, k; S     7     4     0     0     3     0     0
# r1 q. ?* q9 W% `  P; u5 E# e/ A1 s# y3 }
第一行 “1” 表示 第一列 所在行 的数据在 第二列出现 。对应的为所在行。但是,如果 第二列出现两次的话,只得到最小的位置。
8 ~- G2 ^- D) h. Y0 J或者1 R4 ~, d% Q* z0 C6 L- M1 h- D
[find(a==1) b(find(b>0))]# b3 I$ T' z# ^6 x* ^2 x( n
ans =
; {0 T' H& G' u& [) g9 k4 M
/ w* @8 ~- Y' g     1     77 |" {: u) w0 m) [% m- e/ c7 u
     2     4
  ~, s- h0 e6 x) I  l7 g: d     5     3
作者: cscscwwwrte    时间: 2022-4-15 15:20
a1 = accumarray(G( : ),1);
, t+ u6 y. {9 Zloc_a2 = find(a1>=2);




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2