Piccolo aiuto!!

di il
4 risposte

Piccolo aiuto!!

Salve a tutti! cerco di spiegarmi con un piccolo esempio presa una matrice A 5x5, e un vettore v 5x1, come faccio ad individuare nella prima riga di A il valore che più si avvicina al primo elemento di v,nella seconda riga di A quello che più si avvicina al secondo elemento di v, e così via? grazie in anticipo
Allegati:
18397_dbc63775a2ca1372ed548942f956fa28.jpg
18397_dbc63775a2ca1372ed548942f956fa28.jpg

18397_9e4ab494263518f4d36b2eb60cae52c9.jpg
18397_9e4ab494263518f4d36b2eb60cae52c9.jpg

4 Risposte

  • Re: Piccolo aiuto!!

    Ti basta un doppio ciclo for per scorrere la matrice di i righe e j colonne.
    Prendi ogni j elementi dell'i-sima riga di A e lo confronti con l'i-simo elemento del vettore v facendo la sottrazione in valore assoluto dei due elementi e memorizzi in un'altra variabile il più piccolo di questo valore per ogni riga.

    Purtroppo non posso scriverti codice non avendo strumenti a disposizione, ma sono sicuro che tutto ciò che ti ho descritto è facilmente fattibile!
  • Re: Piccolo aiuto!!

    Grazie mille per la dritta,ci sono riuscita
  • Re: Piccolo aiuto!!

    Per completezza, è possibile risolvere il problema senza cicli for, sfruttando le funzionalità di indicizzazione di MatLab.

    Con queste, il problema si risolve con due istruzioni:
    [~,A_idx]=min(abs(A-repmat(v,1,n_col)),[],2);
    AA=A(sub2ind(size(A),[1:n_row]',A_idx)) 
    
    Definiti "A" la matrice e "v" il vettore con i valori di riferimento, "n_row" il numero di righe della matrice, "n_col" il numero di colonne della matrice:
    Con la prima istruzione si individuano (nel vettore "A_idx"), per ogni riga della matrice "A", gli indici della colonna nella quale si trova il valore "più vicino" a quello di riferimento nel vettore "v".

    Con la seconda istruzione si assegnano al vettore "AA" i valori della matrice individuati con l'istruzione precedente.

    Hope this helps.
  • Re: Piccolo aiuto!!

    Grazie anche a te =)
Devi accedere o registrarti per scrivere nel forum
4 risposte