仅在由行索引向量指定的行中替换对角元素? (MATLAB)

时间:2018-04-26 17:58:56

标签: matlab matrix indexing

我有一个N x N矩阵, A ,以及一个行索引向量 v 。我想仅为 v 指定的 A 中的行替换 A 的对角元素,而不使用for循环。

例如:

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;

我觉得必须采用单行方法,但似乎无法弄清楚它会是什么。

干杯

1 个答案:

答案 0 :(得分:5)

使用sub2ind

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