COMPGROUPS.NET | Search | Post Question | Groups | Stream | About | Register

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

```"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

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

2 Replies
292 Views

Similiar Articles:

7/22/2012 10:53:40 PM