/// <summary> /// Reads this instance from a specified start index to a specified end index. /// </summary> /// <param name="startIndex">The start index.</param> /// <param name="endIndex">The end index.</param> public IList <short[]> Read(ulong startIndex, ulong endIndex) { _signals.Clear(); int rows = Convert.ToInt32(endIndex - startIndex + 1); int cols = _labels.Count(); var dataName = string.Concat("/", _groupName, "/Data"); short[,] data = Hdf5.ReadDataset <short>(fileId, dataName, startIndex, endIndex); IEnumerable <short> dataEnum = data.Cast <short>(); int byteLength = sizeof(short) * rows; TimeSpan zeroSpan = new TimeSpan(0); for (int i = 0; i < _readChannelCnt; i++) { //_signals.Add(new short[rows]); string lbl = _labels[i]; int nr = _usedChannels[lbl]; int pos = nr * byteLength; var ar = dataEnum.Where((d, j) => (j - nr) % cols == 0); _signals.Add(ar.ToArray()); //Buffer.BlockCopy(data, pos, _signals[i], 0, byteLength); } return(_signals); }