You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Scilab中获取向量唯一值的最后出现位置?

如何在Scilab中获取向量唯一值的最后出现索引

给定数值向量y:

y = [
2013;
2013;
2013;
2014;
2014;
2015;
2016]

Scilab的unique函数可生成包含唯一值首次出现索引的向量km:

[U, km, ku, nb] = unique(y)

得到的km结果为:

1
4
6
7

现在需要获取每个唯一值最后出现位置的索引向量,期望结果如下:

3
5
6
7

实现方法

这里提供两种实用的实现方式:

方法一:翻转向量结合unique

通过翻转原向量,利用unique获取翻转后首次出现的索引,再转换回原向量的索引位置:

y_rev = flip(y);
[~, km_rev] = unique(y_rev, 'first');
// 转换为原向量的最后出现索引
last_indices = length(y) - km_rev + 1;
// 按原唯一值顺序调整结果顺序
[~, sort_idx] = sort(U);
last_indices = last_indices(sort_idx);

执行后last_indices即为目标结果:[3;5;6;7]

方法二:遍历唯一值查找最后索引

先获取唯一值集合,逐个查找每个值在原向量中的最后出现位置:

[U, ~, ~, nb] = unique(y);
last_indices = zeros(length(U), 1);
for i = 1:length(U)
    // 获取当前唯一值的所有索引,取最后一个
    idx = find(y == U(i));
    last_indices(i) = idx(end);
end

该方法逻辑直观,执行后同样能得到期望的索引向量。


内容的提问来源于stack exchange,提问作者JFS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:12:00