我有一个像这样的向量和矩阵:
v = [0.3 -3 3 -2 7 6]
INDEX = [1 3; 3 5; 4 6]
INDEX
是一个矩阵,指示 RESULT
行必须具有的 v
上的第一个和最后一个元素。我确保 INDEX
中的每个间隔,即
1 to 3
、3 to 5
和 4 to 6
具有相同的长度,因此 RESULT
矩阵中的每一行长度相同。
我想获得这样的矩阵:
RESULT = [0.3 -3 3;
3 -2 7;
-2 7 6]
如何在没有 for
循环的情况下执行此操作?
最佳答案
确定INDEX
每行的最后一个值和第一个值之间的差异。使用此差异生成所需的索引,然后使用这些索引提取所需的值。
idx = [INDEX(:,1) INDEX(:,1)+[1:INDEX(1,end)-INDEX(1,1)]]; %Generating the indices
%for finding indices in <= R2016a, use this:
%idx = [INDEX(:,1) bsxfun(@plus, INDEX(:,1), [1:INDEX(1,end)-INDEX(1,1)])];
RESULT = v(idx);
关于matlab - 从具有特定索引的向量创建矩阵,无需循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48697043/