假设:
v = zeros(4,3)
和
y = [1;2;1;3]
任何方式执行以下操作:
for i = 1:size(v,1)
v(i,y(i)) = 1;
end
以矢量化方式?
例如,以下内容不起作用:
v(:,y) = 1
TIA
答案 0 :(得分:2)
不确定这是否符合您的目的:
v(full(sparse(1:size(v, 1), y, true))) = 1
答案 1 :(得分:1)
这是重复的,我已经看过它曾经问了几次Matlab。但我现在无法找到它们。以下是使用linear indexing的一种方法,您可以使用sub2ind
函数找到它:
v(sub2ind(size(v), (1:length(y))', y)) = 1
分解
colIndex = y;
rowIndex = 1:length(y);
linearIndex = sub2ind(size(v), rowIndex', colIndex);
v(linearIndex) = 1;