【发布时间】:2020-09-20 23:58:39
【问题描述】:
我正在平衡高斯核的 sigma。一旦数组的第一个索引等于0.(any decimal value),我希望打破while循环。
我发现,如果值还包含像 0.000013301 这样的任何小数,则简单地尝试匹配 0 将无法匹配。
var gaussianKernel1d = (function() {
var sqr2pi = Math.sqrt(2 * Math.PI);
return function gaussianKernel1d(size, sigma) {
'use strict';
// ensure size is even and prepare variables
var width = (size / 2) | 0,
kernel = new Array(width * 2 + 1),
norm = 1.0 / (sqr2pi * sigma),
coefficient = 2 * sigma * sigma,
total = 0,
x;
// set values and increment total
for (x = -width; x <= width; x++) {
total += kernel[width + x] = norm * Math.exp((-x * x) / coefficient);
}
// divide by total to make sure the sum of all the values is equal to 1
for (x = 0; x < kernel.length; x++) {
kernel[x] /= total;
}
return kernel;
};
})();
let i = 0.01;
let kernelArray = gaussianKernel1d(512, i);
while (kernelArray[0] === 0) {
i = i + 0.01;
kernelArray = gaussianKernel1d(512, i);
使用Array[0] !== 0.0)时也是如此
无论十进制值如何,如何匹配数据集中等于 0 的任何值?并且无需将数组转换为整数。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: javascript node.js