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

如何查找t=-10:0.01:9.99的对应索引及y中匹配t的索引

嘿,看你的问题应该是在MATLAB里处理向量索引匹配的事儿吧?我一步步给你拆解清楚:

一、找向量t中值在[-10, 9.99]区间的索引

首先你定义的t = -10:0.01:9.99本身就刚好覆盖了[-10, 9.99]这个区间,步长0.01,所以它所有元素都落在这个范围里,对应的索引就是从1到t的总长度:

t_full_idx = 1:length(t);

要是t是某个更大向量的一部分(比如原t里有超出这个区间的元素),那用逻辑索引来精准筛选更稳妥:

% 生成逻辑向量,标记符合条件的元素
t_logical = t >= -10 & t <= 9.99;
% 获取对应的索引
t_idx = find(t_logical);
% 直接提取符合条件的元素也可以:t_selected = t(t_logical);
二、找y中与t对应的索引

因为t和y长度不一样,这里的“对应”分两种常见场景,你按需选就行:

场景1:y里有和t完全匹配的元素

如果y的元素是t的子集,或者存在完全相等的值,用ismember函数最省心:

  • 要是你想得到每个t元素在y中的对应索引(没匹配上的会返回0):
    [is_match, y_idx_for_t] = ismember(t, y);
    % is_match是逻辑向量,标记t里哪些元素在y中存在
    % y_idx_for_t就是每个t元素对应的y索引,不存在则为0
    
  • 要是你想得到y中所有和t元素匹配的元素的索引:
    y_matching_idx = find(ismember(y, t));
    

场景2:y和t是同区间但不同步长的连续采样(近似匹配)

如果y和t是覆盖同一区间但步长不同的序列(比如y步长0.1,t步长0.01),需要找y里最接近每个t元素的位置,就用“找差值最小”的方法:

% 举个例子,假设y是这样的序列:y = -10:0.1:9.9;
% 计算每个t元素和y所有元素的差的绝对值,取最小值对应的索引
[~, y_closest_idx] = min(abs(y - t'), [], 1);

这里把t转成列向量,和y做广播运算,min(..., [], 1)表示对每一列(也就是每个t元素)取最小值的索引,得到的y_closest_idx就是y里最接近每个t元素的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:48:45