Home > Community > Forums > Custom IC SKILL > waveform object as function argument

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 waveform object as function argument 

Last post Wed, Jan 2 2013 5:03 AM by Andrew Beckett. 2 replies.
Started by Steve Mikes 20 Aug 2012 11:10 AM. Topic has 2 replies and 1011 views
Page 1 of 1 (3 items)
Sort Posts:
  • Mon, Aug 20 2012 11:10 AM

    waveform object as function argument Reply

    Does anyone know why this is happening? wave is a parametric waveform.

     procedure( printWave(wave)

       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!

     

    • Post Points: 5
  • Mon, Aug 20 2012 1:03 PM

    Re: waveform object as function argument Reply

     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.

    • Post Points: 20
  • Wed, Jan 2 2013 5:03 AM

    Re: waveform object as function argument Reply

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

    "p1"
    "p2"
    "p3"
    "p4"
    "dc"

    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.

    Regards,

    Andrew.

    • Post Points: 5
Page 1 of 1 (3 items)
Sort Posts:
Started by Steve Mikes at 20 Aug 2012 11:10 AM. Topic has 2 replies.