Multi-Dimensional Datasets for Parametric Analysis
Author ma-laforge
2 Stars
Updated Last
2 Years Ago
Started In
October 2015

MDDatasets.jl: Multi-Dimensional Datasets for Parametric Analysis +Continuous f(x)

Build Status

⚠️ Base library

MDDatasets.jl is a base library to make parametric analysis simple by broadcasting over its multi-dimensional data structures. For a more useful analysis solution, it is highly recommended to install one of the following "suites":

  • CMDimData.jl: Facilitates parametric analysis with continous f(x) interpolation & multi-dimensional plots. Built using MDDatasets.jl module.
  • CMDimCircuits.jl: Extends CMDimData.jl with circuit-specific functionnality (ex: signal processing, network analysis, ...).

Table of contents

  1. Description
    1. Features/Highlights
  2. Sample usage
    1. demo1
  3. Core architecture
    1. Principal types
    2. Object construction
    3. Functions of 1 argument (DataF1) & interpolation
    4. Multi-dimensional datasets (DataRS) & broadcasting
  4. Supported functions


The MDDatasets.jl package provides tools to simplify manipulation of multi-dimensional datasets, and represent {x,y} vectors as a continuous function of 1 argument: y=f(x).


  • Single variable for (x,y) values: Stores both (x,y) values representing y=f(x) in a single, coherent structure. This signficantly improves the simplicity & readability of your calculations.
  • Automatic Interpolation: Calculations will automatically be interpolated over x as if y=f(x) data represented a continuous function of x.
  • Automatic Broadcasting: Operations on multi-dimensional datasets will automatically be broadcasted (vectorized) over all subsets. This significantly improves the readability of programs.

Sample usage

Examples of how to use MDDatasets are provided in the sample/ subdirectory.


Other examples of its capabilities can be found under the test directory.

More advanced usage examples can be found in the sample directories of CMDimData.jl and CMDimCircuits.jl modules.

Usage: Constructing a recursive-sweep dataset

Assuming input data can be generated using the following:

t = DataF1((0:.01:10)*1e-9) #Time vector stored as a function of 1 argument

#NOTE: get_ydata returns type "DataF1" (stores data as a function of 1 argument):
get_ydata(t::DataF1, tbit, vdd, trise) = sin(2pi*t/tbit)*(trise/tbit)+vdd

One can create a relatively complex Recursive-Sweep (DataRS) dataset using the following pattern:

datars = fill(DataRS, PSweep("tbit", [1, 3, 9] * 1e-9)) do tbit
	fill(DataRS, PSweep("VDD", 0.9 * [0.9, 1, 1.1])) do vdd

		#Inner-most sweep: need to specify element type (DataF1):
		#(Other (scalar) element types: DataInt/DataFloat/DataComplex)
		fill(DataRS{DataF1}, PSweep("trise", [0.1, 0.15, 0.2] * tbit)) do trise
			return get_ydata(t, tbit, vdd, trise)

Known limitations


  1. Support for broadcasting functions over DataHR & DataRS types is fairly extensive.
    • Nonetheless, the system is incomplete/imperfect, and unexpected failures will occur.


Extensive compatibility testing of MDDatasets.jl has not been performed. The module has been tested using the following environment(s):

  • Windows 10 / Linux / Julia-1.5.3


The MDDatasets.jl module is not yet mature. Expect significant changes.

Required Packages

No packages found.