Published
Edited
Sep 5, 2018
3 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
r1 = {
const lut = [[1,1], [-1,1], [-1,-1], [1,-1]].map(cplx => cplx.map(val => val * Math.sqrt(2) / 2));
const a = Array(500).fill().map(() => lut[(4 * Math.random()) |0]);
const b = a
.map(cplx => addNoise(cplx, noise))
.map(cplx => cmul(cplx, channel));
const c = mmse(b, [1, 0]);
return [{data: b, name: 'received'}, {data: c, name: 'equalized'}, {data: a, name: 'target'}];
}
Insert cell
Insert cell
r2 = {
let f64buf = new Float64Array(mod.memory.buffer);

const nPoints = 512;
const nDoubles = 2 * nPoints;

const srcStart = 0;
const dstStart = nDoubles;
const eqStart = nDoubles * 2;

fill_qpsk_random(f64buf, srcStart, nDoubles);
bufAddNoise(f64buf, srcStart, nDoubles, noise);
f64buf[eqStart] = 1.0; // Initial EQ
mod.cmul_vector(8 * srcStart, 8 * srcStart, channel[0], channel[1], nPoints);
mod.mmse_time_vector(8 * srcStart, 8 * dstStart, 8 * eqStart, nPoints);
return [{data: f64buf.slice(0, dstStart)}, {data: f64buf.slice(dstStart, eqStart)}];
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more