【发布时间】:2011-05-04 15:38:03
【问题描述】:
这与this other question 密切相关,但由于性能问题,该问题想避免sub2ind。我更关心使用sub2ind的“不优雅”。
假设我想创建另一个 MxN 矩阵,除了我想从向量中的相应条目分配的每一列中的一个条目之外,它全为零,并且每列中的行选择基于另一个向量。例如:
z = zeros(10,4);
rchoice = [3 1 8 7];
newvals = [123 456 789 10];
% ??? I would like to set z(3,1)=123, z(1,2)=456, z(8,3)=789, z(7,4)=10
我可以使用sub2ind 来完成此操作(我在an answer to a closely related question 中使用过):
z(sub2ind(size(z),rchoice,1:4)) = newvals
但是还有其他选择吗?似乎可以以某种方式使用逻辑寻址,但我很难过,因为为了将逻辑矩阵的元素设置为 1,您处理的元素位置与您实际想要处理的矩阵中的元素位置相同。
【问题讨论】:
标签: matlab vectorization