Skip to content

Commit 5e3e562

Browse files
committed
make some noise
1 parent 577a928 commit 5e3e562

File tree

2 files changed

+36
-20
lines changed

2 files changed

+36
-20
lines changed

sims/rotational/index.html

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,15 @@ <h3>Picked Peaks</h3>
178178
return Q;
179179
}
180180

181+
function randGauss() {
182+
var u = 0, v = 0;
183+
while (u === 0) u = Math.random();
184+
while (v === 0) v = Math.random();
185+
return Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
186+
}
187+
188+
var NOISE_FRAC = 0.012;
189+
181190
function computeSpectrum(temperature) {
182191
var y = new Array(npoints);
183192
for (var i = 0; i < npoints; i++) y[i] = 0;
@@ -205,8 +214,15 @@ <h3>Picked Peaks</h3>
205214
}
206215
}
207216

217+
var yMax = 0;
218+
for (var i = 0; i < npoints; i++) {
219+
if (y[i] > yMax) yMax = y[i];
220+
}
221+
var noiseSigma = NOISE_FRAC * yMax;
222+
208223
var floor = 1e-10;
209224
for (var i = 0; i < npoints; i++) {
225+
y[i] += noiseSigma * randGauss();
210226
if (y[i] < floor) y[i] = floor;
211227
}
212228
return y;

sims/rovibration/index.html

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -123,25 +123,14 @@ <h4>Collected Peaks</h4>
123123
var xGrid = new Float64Array(NPOINTS);
124124
for (var i = 0; i < NPOINTS; i++) xGrid[i] = FMIN + i * df;
125125

126-
// Generate noise once so the baseline doesn't jitter when temperature changes
127-
var noiseY = new Float64Array(NPOINTS);
128-
(function () {
129-
var nnoise = 10;
130-
var noises = [];
131-
for (var n = 0; n < nnoise; n++) {
132-
noises.push({
133-
freq: 10 + Math.random() * 90,
134-
phase: Math.random() * 2 * Math.PI,
135-
amp: 0.0005 * Math.random() / nnoise
136-
});
137-
}
138-
for (var i = 0; i < NPOINTS; i++) {
139-
var y = 0;
140-
for (var n = 0; n < nnoise; n++)
141-
y += noises[n].amp * 0.5 * (1 + Math.sin(noises[n].freq * xGrid[i] + noises[n].phase));
142-
noiseY[i] = y;
143-
}
144-
})();
126+
function randGauss() {
127+
var u = 0, v = 0;
128+
while (u === 0) u = Math.random();
129+
while (v === 0) v = Math.random();
130+
return Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
131+
}
132+
133+
var NOISE_FRAC = 0.012;
145134

146135
function computeLines(T) {
147136
var B0 = Be - ae * 0.5;
@@ -182,7 +171,6 @@ <h4>Collected Peaks</h4>
182171

183172
function computeSpectrum(lines) {
184173
var y = new Float64Array(NPOINTS);
185-
for (var i = 0; i < NPOINTS; i++) y[i] = noiseY[i];
186174

187175
var cutoff = 3 * SIGMA;
188176
var invSigSq = 1 / (SIGMA * SIGMA);
@@ -200,6 +188,18 @@ <h4>Collected Peaks</h4>
200188
y[i] += li * Math.exp(-dv * dv * invSigSq);
201189
}
202190
}
191+
192+
var yMax = 0;
193+
for (var i = 0; i < NPOINTS; i++) {
194+
if (y[i] > yMax) yMax = y[i];
195+
}
196+
var noiseSigma = NOISE_FRAC * yMax;
197+
198+
var floor = 1e-10;
199+
for (var i = 0; i < NPOINTS; i++) {
200+
y[i] += noiseSigma * randGauss();
201+
if (y[i] < floor) y[i] = floor;
202+
}
203203
return y;
204204
}
205205

0 commit comments

Comments
 (0)