Problema Matlab matrice - media aritmetica elementi , coordinate i,j dell'elemento che meglio approssima la media.
Salve ragazzi, devo scrivere una procedura che abbia in input una matrice $A$ rettangolare ed in output
1) v := la media aritmetica degli elementi della matrice $A$.
2) i,j : coordinate di un elemento della matrice $A$ che più si avvicina alla media v.
Allora, per la prima consegna non ci sono problemi, per il calcolo della media ho scritto il seguente codice :
Per il punto 2) ho delle belle difficoltà.
L'idea è quella di fissare una certa tolleranza $t$ e iterare il ciclo fintanto che $ |A(i,j)-v| > t $ .. nel momento in cui la condizione precedente è falsa, interrompere il ciclo e stampare gli i,j.
Vi sembra la strada corretta? In caso affermativo, consigli su come implementare una roba del genere?
Grazie mille.
1) v := la media aritmetica degli elementi della matrice $A$.
2) i,j : coordinate di un elemento della matrice $A$ che più si avvicina alla media v.
Allora, per la prima consegna non ci sono problemi, per il calcolo della media ho scritto il seguente codice :
m=size(A); sum = 0; % Calcolo media aritmetica for i=1:m(1) for j=1:m(2) sum=sum+A(i,j); end end v= sum/( m(1)*m(2));
Per il punto 2) ho delle belle difficoltà.
L'idea è quella di fissare una certa tolleranza $t$ e iterare il ciclo fintanto che $ |A(i,j)-v| > t $ .. nel momento in cui la condizione precedente è falsa, interrompere il ciclo e stampare gli i,j.
Vi sembra la strada corretta? In caso affermativo, consigli su come implementare una roba del genere?
Grazie mille.
Risposte
Se fai in questo modo il ciclo si ferma quando trova il primo elemento buono ma non è detto che sia il migliore, oppure potrebbe anche non trovare nessun elemento che soddisfa la richiesta...
Forse si può fare così: per ogni elemento della matrice calcoli $|A(i,j)-v|$ salvando i risultati in una nuova matrice, ora il valore minimo di questa matrice è quello che corrisponde all'elemento ricercato.
Forse si può fare così: per ogni elemento della matrice calcoli $|A(i,j)-v|$ salvando i risultati in una nuova matrice, ora il valore minimo di questa matrice è quello che corrisponde all'elemento ricercato.
Innanzi tutto ti ringrazio per la risposta Walter e mi sembra che funzioni. Tuttavia ho ancora una domanda da porre, esiste una funzione che restituisce gli indici $i,j$ dell'elemento desiderato o mi conviene crearla ad Hoc?
Ad esempio, supponiamo di avere una matrice $A$ utilizzando la funzione $min$ due volte su $A$ questa effettivamente mi sputa fuori il valore minimo della matrice. Domanda, utilizzando in maniera opportuna la stessa (o qualche altra funzione) è possibile ottenere gli indici $(i,j)$ del valore minimo?
Ad esempio, supponiamo di avere una matrice $A$ utilizzando la funzione $min$ due volte su $A$ questa effettivamente mi sputa fuori il valore minimo della matrice. Domanda, utilizzando in maniera opportuna la stessa (o qualche altra funzione) è possibile ottenere gli indici $(i,j)$ del valore minimo?