Structure array size 1x1

  • Follow


Hello there,

I've got two variables - one is a cell array containing double arrays and one is a cell array of cell arrays that contain double arrays. These two variables belong together and they are passed through a lot of functions. I thought I can simply put both together into a struct and adapted all code of my functions so they would work with the struct, as I expected it to be. But now I realized, that it looks different. My two variables look like this:
[S Z]
ans = 
    [1x3 double]    {3x1 cell}
    [2x3 double]    {3x1 cell}
    [4x3 double]    {3x1 cell}

Is there a possibility to put them together into a 1x1 struct array, so that mystruct.S == S and mystruct.Z == Z ?

 My attempt - you expect it - resulted in:

struct('S',S,'Z',Z)
ans = 
3x1 struct array with fields:
    S
    Z
0
Reply M 3/26/2010 12:21:04 PM

"M " <aflopb-mat@yahoo.de> wrote in message 
news:hoi8rg$cig$1@fred.mathworks.com...
> Hello there,
>
> I've got two variables - one is a cell array containing double arrays and 
> one is a cell array of cell arrays that contain double arrays. These two 
> variables belong together and they are passed through a lot of functions. 
> I thought I can simply put both together into a struct and adapted all 
> code of my functions so they would work with the struct, as I expected it 
> to be. But now I realized, that it looks different. My two variables look 
> like this:
> [S Z]
> ans = [1x3 double]    {3x1 cell}
>    [2x3 double]    {3x1 cell}
>    [4x3 double]    {3x1 cell}
>
> Is there a possibility to put them together into a 1x1 struct array, so 
> that mystruct.S == S and mystruct.Z == Z ?
>
> My attempt - you expect it - resulted in:
>
> struct('S',S,'Z',Z)
> ans = 3x1 struct array with fields:
>    S
>    Z

This is the expected and documented behavior; see the "Nonscalar Struct 
Arrays" subsection in this section of the documenation for structs:

http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/br04bw6-38.html#br04bw6-40

As the note at the end of that section states, wrap your cell array in a 
cell array itself to store the cell in the the scalar struct.  Alternately, 
you could create the struct and then use field-indexed assignment to assign 
the cell array into the (scalar) struct.  Compare the four S* variables 
below:

C = {1, 2, 3};
x = 1:10;
S1 = struct('x', x, 'C', C);
S2 = struct('x', x, 'C', {C});
S3 = struct('x', {x}, 'C', {C});
S4.x = x; S4.C = C;

whos S1 S2 S3 S4
  Name      Size            Bytes  Class     Attributes

  S1        1x3               752  struct
  S2        1x1               532  struct
  S3        1x1               532  struct
  S4        1x1               532  struct

-- 
Steve Lord
slord@mathworks.com
comp.soft-sys.matlab (CSSM) FAQ: http://matlabwiki.mathworks.com/MATLAB_FAQ 


0
Reply Steven 3/26/2010 1:25:48 PM


That's it!
Thank you. I only found the function 'struct' in the documentation and well - that didn't help me. I didn't know, that there is also a so detailed docu.

M
0
Reply M 3/26/2010 2:07:04 PM

2 Replies
292 Views

(page loaded in 0.033 seconds)

Similiar Articles:













7/22/2012 10:53:40 PM


Reply: