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, ...).
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 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.
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.
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
- 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.