MDDatasets.jl: Multi-Dimensional Datasets for Parametric Analysis +Continuous f(x)
⚠️ 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
Description
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)
.
Features/Highlights
- Single variable for (x,y) values: Stores both
(x,y)
values representingy=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 ify=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.
Hilights:
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)
end
end
end
Known limitations
TODO
- Support for broadcasting functions over
DataHR
&DataRS
types is fairly extensive.- Nonetheless, the system is incomplete/imperfect, and unexpected failures will occur.
Compatibility
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
Disclaimer
The MDDatasets.jl
module is not yet mature. Expect significant changes.