inds = find(cameFrom);
时间: 2023-12-04 07:02:41 浏览: 79
在 MATLAB 中,`find` 函数可以用于查找数组中非零元素的索引。但是在这里,`cameFrom` 并不是一个数组,而是一个字典,因此 `find` 函数无法直接使用。
如果要获取 `cameFrom` 中非空元素的索引,可以使用 `keys` 函数获取所有的键(即节点),然后利用 `isKey` 函数判断该节点是否有前驱节点,如果有,则将该节点的索引存储在数组 `inds` 中。
具体实现过程可以参考以下代码:
```matlab
function inds = find_nonempty(cameFrom)
keys = cameFrom.keys;
inds = [];
for i = 1:length(keys)
if isKey(cameFrom, keys{i})
inds = [inds, i];
end
end
end
```
该函数会遍历所有节点,判断该节点是否有前驱节点,如果有,则将该节点的索引存储在数组 `inds` 中,并返回非空元素的索引。
相关问题
function p = get_path(cameFrom, current) % Returns the path. This function is only called once and therefore % does not need to be extraordinarily efficient inds = find(cameFrom); p = nan(1, length(inds)); p(1) = current; next = 1; while any(current == inds) current = cameFrom(current); next = next + 1; p(next) = current; end p(isnan(p)) = []; end
这是一个用于获取路径的函数,输入参数为cameFrom和current。其中cameFrom是一个矩阵,表示每个节点的前驱节点,current是终点节点。该函数通过查找cameFrom矩阵,从终点节点开始一步一步往回找,直到找到起点节点,并返回路径。具体实现过程如下:
1. 找到所有非零元素的位置,即有前驱节点的节点位置。
2. 初始化路径p为NaN向量,长度为非零元素的个数。
3. 将终点节点current赋值给路径p的第一个元素。
4. 初始化next为1,表示当前已经找到了路径的第一个节点。
5. 在current的前驱节点中查找下一个节点,即在cameFrom中查找值为current的元素位置,将其赋值给current,并将其添加到路径p中。
6. 如果current为起点节点,则停止查找,返回路径p。
7. 否则,将next加1,继续查找下一个节点。
8. 最后,删除路径p中的NaN元素并返回路径p。
需要注意的是,由于该函数只会被调用一次,因此并没有特别高的效率要求。
将下列numpy代码转化为纯pytorch代码: inds = np.where(scores > args.confidence_threshold)[:] boxes = boxes[inds] landms = landms[inds] scores = scores[inds]
请使用 PyTorch 的 mask 和 index_select 函数来替换 numpy 中的 where 和索引选择。
```
import torch
# 将 scores 转化为 PyTorch tensor
scores = torch.tensor(scores)
# 创建一个 mask,用来筛选出 scores 大于 args.confidence_threshold 的元素
mask = (scores > args.confidence_threshold)
# 使用 mask 和 index_select 函数来筛选出 boxes、landms 和 scores
boxes = boxes[mask]
landms = landms[mask]
scores = scores[mask]
```
阅读全文