>>[a0,b0]=gdat a0 = t: [] data: [] dim: [] dimunits: [] error_bar: [] shot: [] machine: [] gdat_keyword: {'kwd1' 'kwd2'} gdat_params: [1x1 struct] data_fullpath: [] gdat_call: 'gdat;' b0 = data_request: '' machine: 'tcv' doplot: 0 >>[a1, b1]=gdat(48836,'ip','Opt1',123,'Doplot',1,'opt2','Abc') a1 = t: [] data: [] dim: [] dimunits: [] error_bar: [] shot: 48836 machine: [] gdat_keyword: [] gdat_params: [1x1 struct] data_fullpath: [] gdat_call: 'gdat(48836,'ip','Opt1',123,'Doplot',1,'opt2','Abc');' b1 = data_request: 'ip' machine: 'tcv' doplot: 1 opt1: 123 opt2: 'abc' >> b1.newopt=[1 2 34]; >> [a2 b2]=gdat(48836,b1); the "calling string can be used to rerun the call: >> eval(['[a3 b3]=' a2.gdat_call]); a3 is the same as a2