Giả sử tôi có một NxN ma trận A, một V vector chỉ số bao gồm một tập hợp con của các con số 1: N, và một giá trị K, và tôi muốn làm điều này:Làm cách nào để gán giá trị trên đường chéo?
for i = V
A(i,i) = K
end
Có cách nào để làm điều này trong một tuyên bố w/vectorization?
ví dụ: A (một cái gì đó) = K
Tuyên bố A(V,V) = K
sẽ không hoạt động, nó gán các phần tử đường chéo, và đây không phải là những gì tôi muốn. ví dụ:
>> 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
mát mẻ, nó hoạt động! sẽ chấp nhận khi bộ đếm thời gian ngu ngốc chạy hết –
@ Jason S: Cảm ơn! Tôi thực sự thấy đây là một vấn đề khó chịu; Tôi thường cố gắng sử dụng 'diag' trước, trước khi tôi nhớ sử dụng 'eye' – Jonas
cho ví dụ cuối cùng thứ hai, tôi đề nghị sử dụng hàm sub2ind của MATLAB để tìm các chỉ số tuyệt đối. Theo tôi, đây là cách tiếp cận thẳng thắn nhất (và dễ đọc nhất) và có thể thay thế hai đề xuất cuối cùng của bạn. – tc88