Doppio ciclo for per matrici

di il
1 risposte

Doppio ciclo for per matrici

Buongiorno a tutti!
Ho cominciato ad usare Matlab da pochissimo e sto avendo difficoltà con un doppio ciclo for.
L'esercizio che devo risolvere è il seguente:
Ho due matrici chiamate OrigOne ed OrigZero entrambe da 20 righe e 7 colonne.
Devo usare la funzione
corr (x, y)
per paragonare ogni colonna di OrigOne con tutte le colonne di OrigOne (compresa se stessa) e con tutte le colonne della matrice OrigZero.
In pratica voglio che la prima colonna della matrice OrigOne venga confrontata con se stessa, poi con la colonna 2, poi con la 3, ecc. Ogni volta che eseguo un confronto ho bisogno che il valore ottenuto venga stoccato in una matrice. Finito il confronto fra la colonna 1 di OrigOne con tutte le altre di OrigOne, ho bisogno che il programma passi a confrontare colonna1 di OrigOne con tutte le colonne di OrigZero.
Alla fine di ogni iterazione, ho bisogno che il programma crei una matrice con tutti i risultati del confronto fra:
- ogni singola colonna della matrice OrigZero con tutte le colonne della stessa matrice
- ogni singola colonna della matrice OrigZero con ogni colonna della matrice OrigOne

Il ragionamento che ho fatto è il seguente:
- ho bisogno di un primo ciclo che dica al programma "Prendi la matrice OrigOne ed entra nella prima colonna"
- quando sei nella prima colonna, confronta tutti gli elementi della stessa con tutti gli elementi della colonna 1
- quando hai finito questo confronto, procedi a confrontare la colonna 1 con la colonna 2
- colonna 1 colonna 3
ecc.
- Finite le colonne di OrigOne, passa a confrontare la prima colonna di OrigOne con tutte le colonne di OrigZero
E via dicendo.
Per la prima parte ho pensato che servano 2 cicli for: uno con la i che entra nella colonna che sarà costante nel confronto e uno con la j che varierà fino a che la matrice non sarà finita.
Poi ho pensato che ci vorrà un altro ciclo simile per far fare la stessa cosa ma fra OrigOne e OrigZero.
E infine, salvare i confronti in una matrice.

Ecco, questo è stato il mio ragionamento (scusate la lunghezza del post, ma volevo essere chiara). Come faccio a fare tutto ciò? Il ragionamento fra cicli for riesco più o meno a pensarlo su Matlab, ma non capisco come salvare ogni volta la variabile aggiornata (ho pensato: creo una matrice vuota, che ad ogni ciclo si aggiornerà inserendo il valore trovato MA senza trascrivere il precedente. Solo che non so come fare...).

1 Risposte

  • Re: Doppio ciclo for per matrici

    Se ho capito bene la tua questione avrai:
    -dai confronti di OrigZero hai (n^2 + n)/2 matrici(dove n è il numero di colonne), questo perché hai la prima la confronti con n colonne, la seconda la confronti con n-1 colonne e così via. Sommando il tutto avrai la sommatoria da 1 a n.
    -dai confronti di OrigOone hai: la prima colonna per m colonne (il numero di colonne di OrigOne), la seconda per m colonne e così via, quindi mxn matrici.
    La mia domanda è, non conoscendo la funzione che ti serve, queste matrici hanno sempre la stessa dimensione?
Devi accedere o registrarti per scrivere nel forum
1 risposte