Somma di matrici

di il
3 risposte

Somma di matrici

Salve a tutti.
Ho una serie di matrici da 1 a 31. La matrice è cosi strutturata composta : 344x128 int32. quale comando devo dare a Matlab affichè mi restituisce una matrice somma composta da matrici che vanno da 1 a 31?
grazie per l'aiuto

3 Risposte

  • Re: Somma di matrici

    Cosa vuol dire "matrici da 1 a 31"?

    Se vuol dire che hai delle matrici con nomi del tipo "m1", "m2", "m3" ... "m31", il comando che devi dare è

    somma=m1 + m2 + m3 + ...

    fino a m31.

    L'alternativa è rivedere la struttura del codice e trovare un modo più efficiente di definire le variabili.
  • Re: Somma di matrici

    Si si ho le matrici sono definite come ha scritto lei. cioè matrice1, matrice2, matrice3,.... matrice31. esiste un metodo alternativo a quello che ha scritto lei che però mi restituisce la somma di tutte le matrici senza che devo scrivere tutte le matrici?
  • Re: Somma di matrici

    Come ho scritto nella risposta precedente, la soluzione migliore è rivedere la struttura del codice e trovare un modo diverso per costruire le varie matrici.
    Questo faciliterebbe il loro utilizzo nel seguito del programma.
    Dovresti pubblicare almeno la porzione di codice nella quale crei le matrici, in modo che si possa verificare come poterlo migliorare.

    Se le costruisci "manualmente", nel senso che hai 31 istruzioni del tipo "matrice1=...", "matrice2=...", "matrice3=...", c'è sicuramente un metodo per automatizzare il processo, ad esempio creando una struttura i campi della quale siano le varie matrici.
    In questo modo puoi sfruttare la possibilità di creare in modo "dinamico" i nomi dei campi e, quindi accedervi poi, tramite un loop sui campi (la funzione "fieldnames" ritorna i nomi dei campi di una struttura)

    L'ultima risorsa che però ti sconsiglio caldamente di usare è utilizzare la funzione "eval" per creare, in un loop, i nomi della matrici delle quali calcolare la somma.
    
    somma=0
    for i=1:31
       eval(['somma=somma + matrice' num2str(i) ';'])
    end
    
    L'uso della funzione eval può portare a risultati imprevedibili ed errati e renderà il tuo codice sempre più complicato da gestire.
    La cosa migliore che puoi fare è rivedere la parte nella quale crei le matrici
Devi accedere o registrarti per scrivere nel forum
3 risposte