Angenommen, ich habe eine NxN Matrix A, V ein Indexvektor eine Untergruppe bestehend aus den Zahlen 1: N und einen Wert K, und ich möchte, dies zu tun:Wie lege ich Werte auf der Diagonale fest?
for i = V
A(i,i) = K
end
ein Weg gibt es zu tun Dies in einer Aussage w/Vektorisierung?
z.B. A (etwas) = K
Die Aussage A(V,V) = K
wird nicht funktionieren, es weist Elemente außerhalb der Diagonalen, und das ist nicht das, was ich will. zB:
>> 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
cool, es funktioniert! wird akzeptieren, wenn der blöde Timer abgelaufen ist –
@Jason S: Danke! Ich finde das eigentlich ein nerviges Problem; Ich versuche, oft zuerst 'diag' zu verwenden, bevor ich erinnere mich, verwenden' Auge' – Jonas
für die zweiten letzten Beispiele, schlage ich vor, Matlab sub2ind Funktion zu finden, die absolute Indizes zu verwenden. Meiner Meinung nach ist dies der einfachste (und lesbarste) Ansatz und könnte Ihre letzten beiden Vorschläge ersetzen. – tc88