I keep running into a problem using Agilent's ADS2011 software, and haven't really found any explanation in the help documentation....

For a general background:

Without posting an image of my circuit (sorry, boss wants it "secret"), I am driving a DUT with an alternating V_1Tone source, and have two parameters: drive frequency and amplitude (frq, Vd). Numerically, I set these in a VarEqn block. I run a transient simulation, and have a MeasEqn block run a post-process on the DUT output voltage, something like Vo_w=vspec_trans(vout,0,frq,8). Works great and beautiful, with a nice harmonic spectrum in the Data Display.

NOW, here's the problem:

I then sweep over one of my variables, or the other, or both, using either ParameterSweep or a BatchSimulator block. Fine - it works and produces a big matrix for vout as (sweep parameter, time, vout). However, vspec_trans ONLY operates on a vector. I could go slice by slice and output the data with Vo_w = vspec_trans(vout[0,::],0,frq,8) and this works, however, this becomes ridiculous for more than 20 sweep points (I have on the order of 4000). Anyone know how I can get this to work without needing to write a seperate ael function file?! Otherwise, I'll just do an ascii dump of vout, interpolate for even-spaced dt, and run an fft in Matlab - or try to do the ael function (don't know where to begin on this)....

Thank you very much!

For a general background:

Without posting an image of my circuit (sorry, boss wants it "secret"), I am driving a DUT with an alternating V_1Tone source, and have two parameters: drive frequency and amplitude (frq, Vd). Numerically, I set these in a VarEqn block. I run a transient simulation, and have a MeasEqn block run a post-process on the DUT output voltage, something like Vo_w=vspec_trans(vout,0,frq,8). Works great and beautiful, with a nice harmonic spectrum in the Data Display.

NOW, here's the problem:

I then sweep over one of my variables, or the other, or both, using either ParameterSweep or a BatchSimulator block. Fine - it works and produces a big matrix for vout as (sweep parameter, time, vout). However, vspec_trans ONLY operates on a vector. I could go slice by slice and output the data with Vo_w = vspec_trans(vout[0,::],0,frq,8) and this works, however, this becomes ridiculous for more than 20 sweep points (I have on the order of 4000). Anyone know how I can get this to work without needing to write a seperate ael function file?! Otherwise, I'll just do an ascii dump of vout, interpolate for even-spaced dt, and run an fft in Matlab - or try to do the ael function (don't know where to begin on this)....

Thank you very much!

How about using the fs() function? It should work on multi-dimensional data.

If you decide to write a custom AEL expression, you could start here: http://edocs.soco.agilent.com/display/eesofkcads/Writing+Custom+AEL+measurement+expressions