Matlab e funzioni

Splair
salve a tutti,
ho un piccolo problema con le funzioni matlab...
il primo esercizio dice: scrivere una funzione che date 2 matrici $A,B \in R^{nxn}$ si dica se la loro somma è una matrice identità...
io ho provato a scrivere qualcosa del genere:

function [ident]=ident(A, B);
S=A+B;
if diag(S)==(non so cosa scrivere) & S'==S
ident=1;
else
ident=0;

end

Molto probabilmente ho scritto un sacco di cavolate ma vi prego di correggermi...
ne approfitto per scrivere anche un'altra traccia di cui però non ho provato a fare niente...

Scrivere una funzione MATLAB che data una matrice $A \in R^(nxn)$ dica se è persimmetrica, dove per persimmetrica s'intende una matrice che è dimmetrica rispetto alla diagonale secondaria. (cioè $a_{i,j} =a_{n-j+1,n-i+1} ).

Grazie a tutti quelli che mi daranno una mano...
ciao a presto..

Risposte
_luca.barletta
perché controlli solo la diagonale di S? devi controllarla tutta. Per costruire la matrice identità nxn usa eye(n)

david_e1
"Splair":

il primo esercizio dice: scrivere una funzione che date 2 matrici $A,B \in R^{nxn}$ si dica se la loro somma è una matrice identità...

Farei così:
function [ident] = ident(A,B)
n=size(A);
if(n(1)!=n(2)) 
       ident=0; return
else
       n=n(1);
end
if(norm(A+B-eye(n))<eps)
       ident=1; return
else
       ident=0; return
end

settando eps in modo che sia di grandezza sensata (non troppo piccolo altrimenti ti ritorna sempre falso a parte che per matrici di interi ne tr. grande per il motivo opposto).

*** EDIT ***
Non ho provato a far girare questo codice per cui potrebbe anche contenere degli errori, ma l'idea è quella...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.