user149667
Member since Sep 2022 • Last active Apr 2024Most recent activity
-
Thank you very much @Gordon
I am using BangleJs2. I will use the arraybuffer and share the code very soon.
Thanks again. -
New to both Bangle and JavaScript.
I am currently trying to save all the HRM, accelerometer and magnetometer output's individual average and standard deviation once in minute. The code below is giving me Interpreter error: LOW_MEMORY.Please help.
Bangle.setCompassPower(1); filename = "trolololo.csv"; var allData = require("Storage").open(filename, "a"); Bangle.setHRMPower(1); const buffer = { start: null, end: null, data: [] }; const maxSamples = 100; const computeBufferAverage = () => { let sum = [], sum2 = [], mean = [], std = []; const nrows = maxSamples; const ncols = buffer.data[0].length; for(let i=0;i<ncols;i++) { sum[i] = 0; sum2[i] = 0; mean[i] = 0; std[i] = 0; } for (const data of buffer.data) { for (let i=0; i<ncols; i++) { sum[i] += data[i]; sum2[i] += data[i]*data[i]; } } for (let i=0; i<ncols; i++) { mean[i] = sum[i] / nrows; std[i] = Math.sqrt(nrows*sum2[i] - Math.pow(sum[i], 2))/(nrows-1); } return {mean: mean, std: std}; }; Bangle.on('HRM-raw', function(hrm) { const hrmRaw = [ "HRM:", hrm.raw, hrm.filt, hrm.bpm, hrm.confidence ]; const compass = Bangle.getCompass(); const accel = Bangle.getAccel(); if (buffer.data.length === 0) { buffer.start = Math.floor(Date.now()); } if (buffer.data.length < maxSamples) { buffer.data.push([ a.x, a.y,a.z,c.x,c.y,c.z,c.dx,c.dy,c.dz,hrm.raw,hrm.filt,hrm.bpm,hrm.confidence ]); } else { buffer.end = Math.floor(Date.now()); const result = computeBufferAverage(); const str = [ buffer.start, buffer.end, result.mean.join(","), result.std.join(",") ].join(","); print(str+"\n"); allData.write(str); allData.write("\n"); buffer.data.length = 0; } });
Lol I just realised hehe.