Supponiamo di avere una matrice NxN A, un V indice di vettore costituito da un sottoinsieme dei numeri 1: N, e un valore K, e voglio fare questo:Come assegnare valori sulla diagonale?
for i = V
A(i,i) = K
end
c'è un modo per farlo questo in una dichiarazione w/vectorization?
ad es. A (qualcosa) = K
La dichiarazione A(V,V) = K
non funziona, assegna elementi fuori diagonale e questo non è quello che voglio. ad esempio:
>> A = zeros(5);
>> V = [1 3 4];
>> A(V,V) = 1
A =
1 0 1 1 0
0 0 0 0 0
1 0 1 1 0
1 0 1 1 0
0 0 0 0 0
fresco, funziona! accetterà quando scade lo stupido- –
@ Jason S: Grazie! In realtà trovo questo un problema fastidioso; Spesso cerco di usare 'diag' prima, prima di ricordare di usare' eye' – Jonas
per il penultimo esempio, suggerisco di usare la funzione sub2ind di matlab per trovare gli indici assoluti. Secondo me, questo è l'approccio più diretto (e più leggibile) e potrebbe sostituire i tuoi ultimi due suggerimenti. – tc88