Cambio ordine diagonale matlab
Scusate...
Vorrei invertire l ordine della diagonale principale e in un altra funzione l ordine della diagonale secondatria.
Scrivendo qeusta realzione:
for i=1:n
for j=1:m
M(i,j)= A(m-i+1,n-j+1)
end
end
Ho che si scambia l ordine della diagonale principale e quella delal secondaria.
Volendo scambiare solo l ordine della principale o solo l ordine della secondaria che relazione devo utilizzare?
grazie anticipaatamente:)

Vorrei invertire l ordine della diagonale principale e in un altra funzione l ordine della diagonale secondatria.
Scrivendo qeusta realzione:
for i=1:n
for j=1:m
M(i,j)= A(m-i+1,n-j+1)
end
end
Ho che si scambia l ordine della diagonale principale e quella delal secondaria.
Volendo scambiare solo l ordine della principale o solo l ordine della secondaria che relazione devo utilizzare?
grazie anticipaatamente:)
Risposte
Non riesco a capire che cosa intendi con "scambiare l'ordine". Potresti essere un po' più chiaro?
chiara...sono femmina!
XD
cmq ho risolto..
il problema era che presa ad esempio una matrice 2x2 volevo che l elemento a(1,1) scambiasse rodine con l elemento a(2,2)
e ampliando il ragionamento a una matrice + grande che l ultimo elemento della diagonale diventasse il primo mentre il primo l ultimo,così come il penultimo il secondo,il secondo il penultimo e via dicendo..
cioè che sulla diagonale se ho i numeri:
1 2 3 4 abbia i numeri 4 3 2 1
cmq ho risolto mettendo come ipotesi che i==j
corretto vero?XD
XD
cmq ho risolto..
il problema era che presa ad esempio una matrice 2x2 volevo che l elemento a(1,1) scambiasse rodine con l elemento a(2,2)
e ampliando il ragionamento a una matrice + grande che l ultimo elemento della diagonale diventasse il primo mentre il primo l ultimo,così come il penultimo il secondo,il secondo il penultimo e via dicendo..
cioè che sulla diagonale se ho i numeri:
1 2 3 4 abbia i numeri 4 3 2 1
cmq ho risolto mettendo come ipotesi che i==j
corretto vero?XD
"summer.91":
chiara...sono femmina!
cioè che sulla diagonale se ho i numeri:
1 2 3 4 abbia i numeri 4 3 2 1
cmq ho risolto mettendo come ipotesi che i==j
corretto vero?XD
Bastava pensare al problema dell'inversione di una stringa!
I due problemi sono praticamente identici, l'unica differenza sta nel fatto che per prendere gli elementi dalla diagonale principale devi usare 2 indici in più.
grazie mille:)
"summer.91":
chiara...sono femmina!
Hehe..

"summer.91":
XD
cmq ho risolto..
il problema era che presa ad esempio una matrice 2x2 volevo che l elemento a(1,1) scambiasse rodine con l elemento a(2,2)
e ampliando il ragionamento a una matrice + grande che l ultimo elemento della diagonale diventasse il primo mentre il primo l ultimo,così come il penultimo il secondo,il secondo il penultimo e via dicendo..
cioè che sulla diagonale se ho i numeri:
1 2 3 4 abbia i numeri 4 3 2 1
cmq ho risolto mettendo come ipotesi che i==j
corretto vero?XD
Gli elementi della diagonale principale sono esattamente quelli per cui i == j. Puoi quindi lavorare come se avessi un singolo indice. Il codice diventa a quel punto esattamente quello dell'inversione degli elementi di un array, solo usando A(i,i) invece che A(i). Il metodo più semplice è quello di usare un ciclo in cui ad ogni iterazione si scambiano gli elementi in posizione i con gli elementi in posizione n-i, ma è anche possibile scriverlo nel seguente modo in matlab:
D = diag(diag(A)); M = A - D + D(n:-1:1,n:-1:1);
Anche se probabilmente è meglio la versione con i cicli, credo sia comunque utile "giocare" con questo genere di soluzioni per imparare meglio le potenzialità di matlab.
Di niente..
:P:P
Ti ringrazio della risposta,è chiaro il tuo ragionamento ma è anke vero che non sono un genio dell informatica...anzi,e non sarei mai giunta a una conclusione del genere da sola.Inoltre... domani ho l'esame.
Quindi preferisco utilizzare il ciclo for,che trovo molto + semplice
:)
buonaserata:)

Ti ringrazio della risposta,è chiaro il tuo ragionamento ma è anke vero che non sono un genio dell informatica...anzi,e non sarei mai giunta a una conclusione del genere da sola.Inoltre... domani ho l'esame.
Quindi preferisco utilizzare il ciclo for,che trovo molto + semplice

buonaserata:)