Creating Histogram using .mat file

Hello,
I am trying to create a histogram. I used a .mat file to create a 1x5000 structure. I am trying to plot only 1000 out of the 5000, so I call 'a' and set the length to 1000 in a for loop, but it says it is only plotting one data point instead of them all. Any idea what I am doing wrong? Thanks!

2 Comments

1000 is a scalar number, so length(1000) is one, so your loop will iterate exactly once.
ahh I thought if I changed x from a(i).time; to a(1).time; then that would be scalar and only print time once at the first row. Thought I was safe putting it in the length.
How would I fix this so it isn't scalar and includes all 1000 points?

Sign in to comment.

 Accepted Answer

I suspect your don't really want to create 1000 histograms. You don't need a for loop.
Try
histogram([a(1:1000).time])

7 Comments

Hi Cris, I got an error for too many input arguments.
Did you include the square brackets around the structure?
We don't have your data, so I created a simple test case:
a(1).t=5;
a(2).t=0;
a(3).t=5
histogram([a(1:3).t])
What version of MATLAB are you using?
I did, and 2020a
Sclay748
Sclay748 on 18 Aug 2020
Edited: Sclay748 on 18 Aug 2020
The data is super long, but there is 5000 rows, and two columns.
1 column is numbered 1-5000, and second colomn has a single time (in miliseconds), and the field is called time.
wait, now it is working. I was trying to do
histogram([a(1:1000).time/1e3])
to get seconds instead of miliseconds, but the code wasnt liking it.
I think you'd have to do it like this:
histogram([a(1:1000).time]/1e3)
ahh that did it, thank you!

Sign in to comment.

More Answers (0)

Tags

Asked:

on 18 Aug 2020

Commented:

on 18 Aug 2020

Community Treasure Hunt

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

Start Hunting!