From help-request at octave dot org Fri Nov 5 13:10:39 2004 Subject: Re: preallocating memory for cell arrays From: "John W. Eaton" To: "E. Joshua Rigler" cc: octave help mailing list Date: Fri, 5 Nov 2004 14:10:03 -0500 On 5-Nov-2004, E. Joshua Rigler wrote: | Actually, it was a "structure array" that I wanted in the first place, | but I couldn't figure out how to make one. For instance, this certainly | doesn't work in 2.1.57: | | x=struct('test1',zeros(2)); | X=[x,x]; | | Using a cell array (i.e. X={x,x}) was just a stop-gap solution as far as | I was concerned, but I could find nothing in any of the documentation on | how to create an array of structures. | | Then, as I was about to click send for this email, the obvious solution | hit me like a ton of bricks. I'll share it here for all those who may | have been as dense as I about this particular problem: | | x=struct('test2',zeros(2)); | X(1:2) = x; | | So, 1) is this the best solution; 2) does this actually preallocate all | the memory I will need; and 3) would the syntax "X=[x,x]" ever be | desirable (see first example above)? Thanks. Yes, concatenation of structures works in 2.1.60. Also, you can do things like s(1:N).field1 = zeros (nr1, nc2); s(1:N).field2 = zeros (nr2, nc2); ... but your method of using struct might look better if you have multiple fields to initialize. You'd have to do some timings to see which is faster. jwe ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------