PDA

Visualizza la versione completa : [MATLAB] Individuare il valore minimo


MattiaAnimeRex
11-01-2011, 21:43
dato il vettore A=[3 4 5 1 7 2]
esiste una funzione che restituisca l'indice a cui corrispende il minimo?
In questo caso il minimo e' 1, e io voglio che la funziona mi restituisca 4,
ossia il numero della colonna a cui corrisponde 1.

grazie

Cell
11-01-2011, 23:52
Dovrebbe essere possibile farlo con la semplice funzione min. Leggi bene l'help. :ciauz:

valia
13-01-2011, 16:46
min restituisce il minimo, non l'indice.
Tieni conto che se non ricordo male hai 3 e non 4 (la colonna è la 3 se parti a contare da zero).

Non so se esistono altre funzioni, magari prendi il minimo con min e con quello scorri l'array alla ricerca della prima occorrenza

YuYevon
13-01-2011, 16:57
min() può restituire anche l'indice del minimo, dovrebbe bastare scrivere qualcosa come

[~, ind] = min(A);

dove la tilde serve a sopprimere il primo output (che è proprio il valore minimo) che in questo caso non è di interesse.

Cell
13-01-2011, 19:32
Originariamente inviato da valia
Tieni conto che se non ricordo male hai 3 e non 4 (la colonna è la 3 se parti a contare da zero).

Diversamente da ciò che avviene in molti altri linguaggi, in Matlab gli indici degli array vanno da 1 a n, non da 0 a n-1.



Originariamente inviato da YuYevon
min() può restituire anche l'indice del minimo, dovrebbe bastare scrivere qualcosa come

[~, ind] = min(A);

dove la tilde serve a sopprimere il primo output (che è proprio il valore minimo) che in questo caso non è di interesse.

Infatti proprio a questo mi riferivo, ma bisogna anche imparare a leggere l'help quando si usa un comando. ;) Guardando qui (http://www.mathworks.com/help/techdoc/ref/min.html) infatti è scritto:

min - Smallest elements in array
Syntax

C = min(A)
C = min(A,B)
C = min(A,[],dim)
[C,I] = min(...)
Description

C = min(A) returns the smallest elements along different dimensions of an array.

If A is a vector, min(A) returns the smallest element in A.

If A is a matrix, min(A) treats the columns of A as vectors, returning a row vector containing the minimum element from each column.

If A is a multidimensional array, min operates along the first nonsingleton dimension.

C = min(A,B) returns an array the same size as A and B with the smallest elements taken from A or B. The dimensions of A and B must match, or they may be scalar.

C = min(A,[],dim) returns the smallest elements along the dimension of A specified by scalar dim. For example, min(A,[],1) produces the minimum values along the first dimension of A.

[C,I] = min(...) finds the indices of the minimum values of A, and returns them in output vector I. If there are several identical minimum values, the index of the first one found is returned.

[...]

Comunque anche se non uso più Matlab da un bel po' di tempo, voglio ringraziarti perché il fatto della tilde non lo sapevo, ed in passato ho più volte cercato in giro senza successo come fare a sopprimere un output. Lo terrò presente se lo dovrò riutilizzare in futuro. :)

valia
13-01-2011, 20:17
Originariamente inviato da Cell
Diversamente da ciò che avviene in molti altri linguaggi, in Matlab gli indici degli array vanno da 1 a n, non da 0 a n-1.



eh ricordavo male allora, ho usato un bel po' matlab e dopo un po avevo imparato ad usare le funzioni principali, ma mi ero completamente scordata del fatto che gli indici partono da 1 visto che un buon numero di linguaggi di programmazione/scripting parte da 0!!

Loading