给定步长下区间不同数值及高维网格点计数通用方法问询
可变步长多维网格点数通用计算公式
1 一维(1D)场景基础公式
对于闭区间[a, b],固定步长为s的情况下,区间内的数值总数公式为:N = floor((b - a) / s) + 1
其中floor()为向下取整函数,用于处理区间长度不是步长整数倍的场景,保证所有生成的点都落在[a,b]范围内。
- 验证示例:区间
[0, 10]步长0.1,代入得(10-0)/0.1 +1 = 101,和测试计算结果完全匹配。 - 补充说明:如果是左闭右开区间
[a, b),去掉公式末尾的+1即可。
2 多维(nD)场景通用公式
多维网格的总点数本质是各维度取值集合的笛卡尔积的元素总数,仅需分别计算每个维度的点数后相乘即可,不受维度数量限制,天然支持各维度步长不同的可变步长场景:
2.1 通用计算逻辑
- 对第
d个维度,定义其取值区间为[a_d, b_d],步长为s_d - 计算单个维度的点数:
N_d = floor((b_d - a_d) / s_d) + 1 - 总点数为所有维度点数的乘积:
N_total = N_1 * N_2 * ... * N_n
2.2 2D场景验证
x轴区间[-10,10]步长0.1,y轴区间[-10,10]步长0.1:
- x轴点数:
(10 - (-10))/0.1 +1 = 201 - y轴点数:
201 - 总网格点数:
201 * 201 = 40401
3 特殊场景说明
如果同一维度内部步长不固定(比如前半段步长0.1,后半段步长0.2),只需要分段计算该维度的点数再求和,之后仍按照上述多维度乘积逻辑计算总点数即可。
内容的提问来源于stack exchange,提问作者kartikeya saraswat
相关产品推荐
相关产品推荐

