/ / Замяна на диагоналните елементи само в редове, определени от вектор на ред индекси? (MATLAB) - MATLAB, матрица, индексиране

Да се ​​заменят диагоналните елементи само в редове, определени от вектор на ред индекси? (MATLAB) - MATLAB, матрица, индексиране

Имам N x N матрица, А, и вектор от ред индекси, V, Искам да заместя диагоналните елементи на А само за редовете в А посочен от V без да използвате линия за.

Например:

N = 10;
A = rand(N,N); %Random N x N matrix

v = [1 4 6 9 10]; %vector of row indices

%What I want to do but without a for loop:
for i = 1:length(v)
A(v(i),v(i)) = 0;
end

%I thought this would work, but it does not:
%A(v,v) = 0;

Имам чувството, че трябва да има еднолинеен метод за това, но не мога да разбера какво ще бъде.

Наздраве

Отговори:

5 за отговор № 1

употреба sub2ind:

A(sub2ind(size(A),v,v)) = 0;