matlab - 从具有特定索引的向量创建矩阵,无需循环

标签 matlab matrix vector indexing vectorization

我有一个像这样的向量和矩阵:

v = [0.3 -3 3 -2 7 6]
INDEX = [1 3; 3 5; 4 6]

INDEX 是一个矩阵,指示 RESULT 行必须具有的 v 上的第一个和最后一个元素。我确保 INDEX 中的每个间隔,即 1 to 33 to 54 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/

相关文章:

r - lm() : What is qraux returned by QR decomposition in LINPACK/LAPACK

android - 在 Android Canvas 上绘制位图的一部分

javascript - 右键单击开放层中的特征向量(Javascript)

javascript - Three.js 获取具有给定世界方向坐标的场景向量的对象相对局部方向

matlab - 单一回归与全部回归中函数句柄的混淆

python - 如何删除 NumPy/SciPy 中的一些变量?

matlab - 在 Matlab 中将颜色合并到图形表示中

java - 从任何类读取和写入的矩阵

c# - 你如何取向量的倒数?

Python Matlab 引擎安装