Is it possible to do calculations with GNU Octave using measuring units?
Hello! In qalc I can do calculations using measuring units like this:
> 5 W * 3 s
(5 watts) × (3 seconds) = 15 J
I'd like to be able to do something similar also in GNU Octave. I think the symbolic library could be a place to look at, but I found nothing "already done". Do any of you know of a way to achieve this functionality?
It looks interesting, but more focused on conversions than actual operations it seems:
octave:37> a.value = 100
a =
scalar structure containing the fields:
value = 100
unit = W
octave:38> a.unit = 'W'
a =
scalar structure containing the fields:
value = 100
unit = W
octave:39> b.value = 3
b =
scalar structure containing the fields:
value = 3
unit = s
octave:40> b.unit = 's'
b =
scalar structure containing the fields:
value = 3
unit = s
octave:41> a*b
error: binary operator '*' not implemented for 'scalar struct' by 'scalar struct' operations
I think I've found a solution. Matlab has implemented symunits in the symbolic toolbox and I've found the original? on Github. Hopefully it is compatible to GNU Octave.
I downloaded it and tried to run it, but it gets stuck in a loop and I don't know how it could be fixed:
error: max_recursion_depth exceeded
error: called from
baseUnitSystem
<unknown>
it seems the problem is in the line
coreUnits = buildCoreUnits(u.baseUnitSystem);
in the file u.m, I think because u.baseUnitSystem tries to "call itself". I don't know what this should be supposed to do, and have no idea on how to possibly fix it :(