Я хочу заменить значение n-го столбца матрицы на основе векторных значений в векторном виде.
Вход:Векторизация замены столбцов на основе вектора - MATLAB
[0 0 0 0]
[0 0 0 0]
[0 0 0 0]
[0 0 0 0]
Vector:
[2]
[4]
[1]
[3]
Ожидаемый результат:
[0 1 0 0]
[0 0 0 1]
[1 0 0 0]
[0 0 1 0]
Matlab код с для цикла:
A = zeros(4,4);
b = [2; 4; 1; 3];
for row=1:4
A(row, b(row)) = 1;
endfor
код Matlab с sub2i nd:
A = zeros(4,4);
b = [2; 4; 1; 3];
c = [[1:length(b)]' b];
A(sub2ind(size(A), c(:,1), c(:,2))) = 1;
Есть ли более векторный способ в Matlab? Спасибо.
Спасибо. Можно ли использовать индексирование индекса вместо линейной индексации в Matlab для выполнения задания? – silo
@silo Чтобы сделать эту работу, линейная индексация кажется лучшим выбором здесь. – Divakar