【发布时间】:2015-12-19 13:05:51
【问题描述】:
我有一个二维数组 L,我正在尝试为该数组的每一行创建一个线性索引向量 ind。
L=
1 5 25 4 0 0
2 3 3 45 5 6
45 5 6 0 0 0
我正在使用lenr 存储每行中非零元素的数量(从第 1 列开始)。
lenr=
4
6
3
然后我有 1x45 数组 RULES。存储在L 中的索引引用RULES 中的元素。由于我想对代码进行矢量化,我决定创建线性索引,然后运行RULES(ind)。
这很好用:
ind=sub2ind(size(L),1,lenr(1));
虽然这不起作用:
ind=sub2ind(size(L),1:3,1:lenr(1:3));
有什么想法吗?
更新:
这是我最初尝试对代码进行矢量化的方法,但它不起作用,这就是我检查线性索引的原因:
rul=repmat(RULES,3);
result = rul((L(1:J,1:lenr(1:J))));
【问题讨论】:
-
请提供一个完整的示例并解释您要做什么。
-
@excaze:看看我的更新。
-
你为什么用
1:lenr(1:3)而不是lenr(1:3)? -
@excaza:我使用 1:lenr(1:3) 来获取从 1 到每行对应长度的 L 个元素(lenr 包含不包括 0 的长度)。
-
这里让我喂你 -
allind = reshape(1:numel(L),size(L,1),[])然后ind = allind(L~=0)。虽然没有测试。
标签: matlab vectorization