提交 14c994f9 编写于 作者: P pissang

[List] Fix downSample and getIndices.

上级 a31dbfad
...@@ -564,7 +564,7 @@ listProto.getIndices = function () { ...@@ -564,7 +564,7 @@ listProto.getIndices = function () {
var Ctor = getIndicesCtor(this.count()); var Ctor = getIndicesCtor(this.count());
var arr = new Ctor(this.count()); var arr = new Ctor(this.count());
for (var i = 0; i < arr.length; i++) { for (var i = 0; i < arr.length; i++) {
arr[i] = arr; arr[i] = i;
} }
return arr; return arr;
}; };
...@@ -1163,8 +1163,6 @@ listProto.downSample = function (dimension, rate, sampleValue, sampleIndex) { ...@@ -1163,8 +1163,6 @@ listProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {
var list = cloneListForMapAndSample(this, [dimension]); var list = cloneListForMapAndSample(this, [dimension]);
var targetStorage = list._storage; var targetStorage = list._storage;
var indices = list._indices = [];
var frameValues = []; var frameValues = [];
var frameSize = Math.floor(1 / rate); var frameSize = Math.floor(1 / rate);
...@@ -1172,6 +1170,9 @@ listProto.downSample = function (dimension, rate, sampleValue, sampleIndex) { ...@@ -1172,6 +1170,9 @@ listProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {
var len = this.count(); var len = this.count();
var chunkSize = this._chunkSize; var chunkSize = this._chunkSize;
var newIndices = new (getIndicesCtor(len))(len);
var offset = 0;
for (var i = 0; i < len; i += frameSize) { for (var i = 0; i < len; i += frameSize) {
// Last frame // Last frame
if (frameSize > len - i) { if (frameSize > len - i) {
...@@ -1179,20 +1180,24 @@ listProto.downSample = function (dimension, rate, sampleValue, sampleIndex) { ...@@ -1179,20 +1180,24 @@ listProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {
frameValues.length = frameSize; frameValues.length = frameSize;
} }
for (var k = 0; k < frameSize; k++) { for (var k = 0; k < frameSize; k++) {
var dataIdx = i + k; var dataIdx = this.getRawIndex(i + k);
var originalChunkIndex = Math.floor(dataIdx / chunkSize); var originalChunkIndex = Math.floor(dataIdx / chunkSize);
var originalChunkOffset = dataIdx % chunkSize; var originalChunkOffset = dataIdx % chunkSize;
frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset]; frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];
} }
var value = sampleValue(frameValues); var value = sampleValue(frameValues);
var sampleFrameIdx = sampleIndex(frameValues, value) || 0; var sampleFrameIdx = this.getRawIndex(i + sampleIndex(frameValues, value) || 0);
var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize); var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);
var sampleChunkOffset = sampleFrameIdx % chunkSize; var sampleChunkOffset = sampleFrameIdx % chunkSize;
// Only write value on the filtered data // Only write value on the filtered data
dimStore[sampleChunkIndex][sampleChunkOffset] = value; dimStore[sampleChunkIndex][sampleChunkOffset] = value;
indices.push(sampleFrameIdx);
newIndices[offset++] = sampleFrameIdx;
} }
list._count = offset;
list._indices = newIndices;
return list; return list;
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册