问题描述
我必须根据数据值 v/s time {x-axis= time[],y-axis = data1[]} 绘制图表。我想推断这个数组,然后绘制图形。 我使用了以下代码,这是正确的方法吗?
function interpolateArray(data,fitCount) {
var linearInterpolate = function (before,after,atPoint) {
return before + (after - before) * atPoint;
};
var newData = new Array();
var springFactor = new Number((data.length - 1) / (fitCount - 1));
newData[0] = data[0]; // for new allocation
for ( var i = 1; i < fitCount - 1; i++) {
var tmp = i * springFactor;
var before = new Number(Math.floor(tmp)).toFixed();
var after = new Number(Math.ceil(tmp)).toFixed();
var atPoint = tmp - before;
newData[i] = linearInterpolate(data[before],data[after],atPoint);
}
newData[fitCount - 1] = data[data.length - 1]; // for new allocation
return newData;
};
data1 = interpolateArray(data1,(data1.length*2))
data2 = interpolateArray(data2,(data2.length*2))
然后我在纪元时间转换日期,然后做同样的事情并转换回UTC时间, 像这样
Timestamp11=interpolateArray(Timestamp11,(Timestamp11.length*2))
for(var i=0;i<Timestamp11.length;i++)
{
console.log(Timestamp11[i]);
var edgeTime11=Timestamp11[i]/1000000
var myDate11 = new Date(Time11)
var utcString = myDate11.toString();
var time = utcString.slice(16,24);
Timestamp11[i] = time;}
window.myLine3 = new Chart(ctx3,charInit3(data1,data2,Timestamp11));
这是推断时间序列数据的正确方法吗??如果不是,请纠正我。
解决方法
顶部
const interpolateArray = (data,fitCount) => {
let newData = [];
let springFactor = Number((data.length - 1) / (fitCount - 1));
let linearInterpolate = (before,after,atPoint) => {
return before + (after - before) * atPoint;
};
for (var i = 0; i < fitCount - 1; i++) {
let tmp = i * springFactor;
let before = Number(Math.floor(tmp)).toFixed();
let after = Number(Math.ceil(tmp)).toFixed();
let atPoint = tmp - before;
newData.push(linearInterpolate(data[before],data[after],atPoint));
}
// for new allocation
newData[fitCount - 1] = data[data.length - 1];
return newData;
};
let originalArry = [1,5,3];
let newArry = interpolateArray([1,3],5);
let p1 = document.createElement('div');
let p2 = document.createElement('div');
document.body.appendChild(p1);
document.body.appendChild(p2);
p1.textContent = 'Original Array : ' + JSON.stringify(originalArry);
p2.textContent = 'After Intrapolation( value = 5) : ' + JSON.stringify(newArry);