Does anyone know why this is happening? wave is a parametric waveform.
plot(wave) ; this works fine
plot( value(wave "param1" value1) ) ;this does not work, it says the argument is not a waveform
If I do the latter statement outside of the procedure, it works fine. Any suggestions? Thanks!
After some more searching I discovered the famMap function which goes through the family of waves recursively. My function now looks like this:
procedure( printWave(wave) cond( (drIsWaveform(wave) foreach(val sweepVarValues( car(sweepNames(wave)) ) printf("%-10g%-10g\n" val value(wave val) ) ); foreach ) (famIsFamily(wave) famMap( 'printWave wave) ) (t error("printWave - can't handle %L\n" wave) ) ); cond); procedure printWave
My question now is this: When I'm in the single wave case, how do I know what the other sweep parameter values are? My ultimate goal is just to print out the family of curves like this:
param1 param2 param3 measurement
p1val1 p2val1 p3val1 mval1
p1val1 p2val1 p3val2 mval2
p1val1 p2val2 p3val1 mval3
and so on. What's the best way to do this? Thanks.
In reply to Steve Mikes:
You can use famGetSweepName(wave) to get the outer sweep name - and add an integer argument to get each nested value:
for(dim 0 5 printf("%L\n" famGetSweepName(wave dim)))
And you can use famGetSweepValues(wave) to get the outer sweep values. For example, in my case this returns (1.0 2.0). I can then do:
nextInner=value(wave "p1" 1.0)
and then I can do famGetSweepValues(nextInner) and so on...
Or you could just use ocnPrint() - but maybe that's not in the format you want.