EDA365电子论坛网

标题: 怎样用MATLAB找出一些最小值,并返回他们在原矩阵中的位置? [打印本页]

作者: dapmood    时间: 2020-5-7 10:13
标题: 怎样用MATLAB找出一些最小值,并返回他们在原矩阵中的位置?
怎样用MATLAB找出一些最小值,并返回他们在原矩阵中的位置?
  Y/ k9 o$ I! |2 Y( w
作者: CCxiaom    时间: 2020-5-7 13:32
>> a=magic(5)
- N, M, |1 b- r3 d0 q& z" J- T" h# _6 C! `
a =
6 W9 L; Q# X! W) Z4 l- [# E! P8 F2 ~0 m, E# h) P: _  I& @
    17    24     1     8    15
" q2 V% x. u8 i; `; J) U    23     5     7    14    16% Z. P$ G1 \- C: a
     4     6    13    20    22: l/ l% G, B3 {! l$ A" ~+ K! a% b# `
    10    12    19    21     3
9 V4 v  E+ ?' n! F( `, q    11    18    25     2     9( |3 q' Y! H0 _. P& J' Y) g
2 c8 r9 z; Z3 m2 y. z0 p
>> min(min(a))
) r$ r7 P* a: `% \. Z) S% y. U' }+ P$ n! \( C
ans =# J2 e/ t% N! o

! W6 t* l& Q) U, P( P! U$ L     16 u! v- N, R7 U
最小值
; f2 G  N8 X1 O  [* V! K>> [x,y]= find(a==min(min(a)))
) R7 n  m# s* H: V* ~7 H9 B, s+ o# B  [% i, x
x =& w  ^* ^  j3 B' S  P# i2 K% B
/ N. M7 c  ?) ]# i, R  S/ |
     1
6 e. ^4 E* b  _" m- V: J) W& v) @2 Z# U8 c6 v

) v: U6 }& g$ M9 Qy =
4 O$ W% I& l# c& T- P% v2 x
# l3 ?/ s7 z- B- a. n# N& J     3$ m; T# A% z. k; o4 Z7 r6 f6 e$ n
最小值的位置 是1行3列 也就是最小值1的位置
( v4 v- Q& f. ?0 }2 m# t! E3 m$ K$ }5 A: @( m: e* l
>> sort(a(: ))
( T' q  b" a9 P8 B& K$ Q- ~
' J9 F; U. s9 O, T  Y6 ^4 Dans =
: V( E" T# G; ]: n/ `# y
6 P, a6 N# B( Q+ f, ]0 w     1
1 {3 p0 D2 {- x) x1 |4 U1 ]3 C     2- J% [9 M4 f1 r5 `9 c
     3
: r- m5 M% D& h4 i' q     47 W# ]8 D3 W; A
     5$ @0 i; @$ L& v9 J
     6: o' N; e. Z8 Q9 W  g) Q
     7
8 S' G" X. _8 x/ J     8
! F0 J9 P- {' m+ l; P, Z+ W$ S     9
: H5 H& |8 x( T  D% h' U; U" Y    10
  C- E( o" u% R    113 x$ r% G$ ~- h/ P  u
    12) A6 ]" A0 \2 ]% C  q7 H0 h$ g
    13" s0 D- z4 _& i$ X' ?
    14
" V' ~6 d% w3 n2 [3 x9 m8 B    15% o& k3 y1 K1 C/ f# O
    16
5 w, o# t$ s" x/ b/ Y    171 Y( D: I+ J4 u* \
    18" \: e6 x& @; x: W- K
    19
/ C! Q" j) H0 ~' _  f: D    205 B6 @$ d  j7 i$ d: c
    21: X6 y$ {, G6 c1 a8 C
    22
7 a0 [. K8 ?. ?% c% T4 d) w* q    23
2 m( }5 e' e+ D  b: [, D    24
$ w3 U2 X( _: g) a    255 |+ A7 M7 ?* ]# l3 l2 @! O7 F
升序排列6 ~% I" R/ N$ @1 |& V  L
>> b(1:5)5 p! i8 i8 Y; k5 i" g

/ V" e5 i; W/ q9 F( lans =& K' T; \. L  b

# `* Y. _$ {  o- Y5 g6 o" l; f. l* h     1
: u0 C5 V& o- o: h     2
3 b. L. @8 E$ N7 \% Q; u     3* T% x! ^/ V, v+ P
     4
& G8 w- }( B7 }9 b% G     5
. P4 @0 q7 \. B) l4 K' `最小的5个值 你可以任意设定一些最小值$ E2 C; ^5 D+ N! E5 ~/ F" a
>> for i=1:5& B6 ^- o' z- p% c) z1 u, k
[x,y]=find(a==b(i))( w- H: S2 u  i5 O- x3 C/ f
end
& {3 I, P8 g# o9 [, ?. K) e2 E3 |. Y
x =4 N, f6 C  ]0 Z
% J% r1 D" A3 m. k' X$ Z/ o
     1
( ?, o. Y" q: E1 e4 w" e% N: T, m
" {; V+ F. _, m4 h
7 T4 ~2 I9 S$ A1 u$ U8 c- Gy =
7 l1 d/ n$ ?4 X( f! T/ ~( J) F/ N' m9 L# o; B. L8 y
     3
" P/ [! G  O# {7 s
6 Y# e: Z/ o3 F& A6 [. d( a0 L6 m6 H$ U+ n3 P
x =2 i6 O; f% D( f" l7 c( W
7 j8 y, J( v6 n  `. y2 `0 O, D& V
     5. F# \: _! q$ t8 a# z" U9 K- h( J4 P
' u7 X3 y" q, B8 Q6 J, C
0 E; h) c' t8 C
y =
- t2 Z+ g7 o" Y) _# C* c/ q" P8 t6 O; Y- u$ H; \
     4% J( O, J7 i( Q0 X* ?
; m& Z, y; a: p; V* g' b5 S' O. T

' Q  e# B6 _4 K  }. qx =
1 _0 {: J  O/ p% Y. s# O7 ]3 G- l% @9 q1 V
     4
4 f. Q# M4 l( C1 j: t8 m! m. Z# G% l2 n

% u: Z' ]# r4 ^; O( ?y =
+ _: r4 Q$ ^% F& u" f
- w& d% U, `. V5 C4 o     5- @0 j8 O" X' p7 h, G+ I

2 r( I: {0 \% G) l9 n5 |
( U* E5 u2 i& D/ r; bx =
3 N! ?2 h" c8 y1 `, D. j4 ^# @/ e7 Q/ M5 |( l" `
     3
: c& d. P* X: S4 {' ?* G2 ^3 V* V, V# y* M5 [
) ?9 O! J9 B/ I, K4 i! Z5 r; V0 H
y =* p* g& ]  g( p( `% ]3 U# E" A

1 L5 V# t  [& w! f  g( x     1
2 i+ E' @: m1 ^. o3 \9 ~% t$ X# L) A2 a% o

3 p0 l1 W4 E" }6 Hx =  w' p2 c" v4 `" z! T. U

6 h& ?) B/ S; _9 C8 p7 _     2
3 t" K0 j# }7 U" b' C$ q; A
  w0 j* B. c8 [6 Y" p- T! Y4 t  C  N7 B  s! |3 [9 l  b
y =- B' {  C8 r. k$ \7 k

8 [' E* |7 ]7 d     2
2 x8 ]  }1 S4 M$ F5个最小值的位置
8 I- U. d8 t, G$ [5 X+ t) H" O
作者: yin123    时间: 2020-5-7 13:52
楼上正解!
: A  L4 x' P8 O1 ]如果不熟悉build-in函数,自己编程也未尝不可。
作者: NNNei256    时间: 2020-5-7 13:53
可以Help一下
作者: youOK    时间: 2020-5-7 17:08
min函数本身即可以返回位置信息,不用这么麻烦的呢。
' u9 r1 ?0 }5 x6 M. i5 s
9 h+ u3 I3 y% Q3 k9 k( W9 ?  {. F7 f[minx, ind] = min(x);
" v# k" V8 {2 ^( b) [$ f, x9 `" i! O- ^! W$ V# \
ind就是找到的最小值的位置。
作者: mengtaiqi    时间: 2020-5-7 17:09
本帖最后由 mengtaiqi 于 2020-5-7 17:11 编辑 1 a. H' B% J0 O2 d- m. ^
2 |5 o! S0 @3 ~7 l3 b
>> a=magic(8);2 ?6 Q( u8 R: U: S1 A$ m1 B4 ~0 v
tic
" H9 L3 `: @4 Y2 ?find(max(max(a))==a)9 I; {# |8 s  G! w, P
toc
4 M) \! ~$ M; ^0 f1 b3 a3 E- i( [) d/ i, J% X
tic
. M+ i/ M9 t: D1 n0 U- S[maxa, ind] = max(a(: ))6 X3 ^6 H% @  k$ u; `* ~* V
toc" l5 F4 B" ?1 O
) ~1 @, w- P' A' T' }
ans =; ]' @" ?# s* B& v9 @0 _

: O8 ?' X2 w' S% D4 h5 K     1' c2 e( G& V' I
( [. K5 P$ `# ?4 |1 f: Z
Elapsed time is 0.012841 seconds.
% s) n# w# k' K1 S6 r; S, ~
% W! }' x' [) r, V8 zmaxa =
  u1 ~; u! A9 e% X4 w& {* G' V$ I+ v  L' J/ f+ h0 d
    64
# D- l: N5 f( H3 A: O# M4 A
% ~* F- z9 L7 T& f5 b
0 g3 S  z$ @7 m% Xind =% s+ e$ }. a9 V

- O: s* S9 Y2 Y0 A% @9 l* \     1
0 t2 g7 W8 v1 @. ^5 ?3 t
9 Q( g3 Z/ V. x( jElapsed time is 0.004498 seconds.
2 k5 l1 ?* @) D) \3 p  W* o& `* H% ~) k, _
区别还是很明显的,max和min函数提供了很好的使用方式为何不使用呢?不需要借助于find函数了。find函数的效率比起来关系表达式也是慢了很多的。
作者: xiaogegepcb    时间: 2020-5-8 13:26
CCxiaom 发表于 2020-5-7 13:32  K9 M4 O( i7 H
>> a=magic(5)
# d1 P) I  m' A! \, z6 C* s/ a8 U3 K5 f; u
a =

8 D* }2 f5 x/ G, [' V太详细了,厉害啊
! t$ [% {: O" q' ?
% n& m8 l3 H2 J* e0 H1 c' T
作者: pcbwenrou    时间: 2020-5-8 14:19
太详细了,厉害啊
作者: ExxNEN    时间: 2020-5-9 14:45
大神遗失民间啊




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