Accessing data in 1x2 structure array

17 views (last 30 days)
I'm trying to simply plot the X and the Y data from the data set given to me (see attached image) but I don't seem to be seeing the full data set when I do. For example, I load in the x and y data and plot
x=data.X
y=data.Y
imagesc(x) etc etc etc
Whats confusing me is - the X data is originally in a 1x2 structure so when I load in the data like I did above, what exactly am I loading in? Am I loading in the full 1x2 structure or only the first row of the X data (from attached image). The reason I ask is because the image being plotted is not what I expected.
I hope this makes sense and would really appreciate any help. Thanks in advance

Accepted Answer

Adam
Adam on 9 Jun 2015
x = data.X
is just giving you the equivalent of
x = data(1).X
and ignoring the 2nd element of the data array.
What are you trying to plot though with imagesc? You effectively have two 111 x 101 matrices in data.X. You can pass either one of them to imagesc, but not both at the same time.
You can plot one as an alpha overlay on the other if you wish, but I don't know if that is what you are aiming for.
  2 Comments
Guillaume
Guillaume on 9 Jun 2015
Note that the behaviour of struct.field, when struct is an array can be a bit confusing if you don't know what is going on behind the scene.
When you write struct.field, the structure array is expanded into a comma separated list struct(1).field, struct(2).field, etc.. Similar to the output list of a function, each element of the list can be assigned to a single variable.
Thus, you could do:
[x1, x2] = data.X;
which would be equivalent to
x1 = data(1).X;
x2 = data(2).X;
Tadgh Cullen
Tadgh Cullen on 9 Jun 2015
That's exactly what I wanted to clear up. Thank you both

Sign in to comment.

More Answers (0)

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!