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 commentaires

Stephen23
Stephen23 le 18 Août 2020
1000 is a scalar number, so length(1000) is one, so your loop will iterate exactly once.
Sclay748
Sclay748 le 18 Août 2020
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?

Connectez-vous pour commenter.

 Réponse acceptée

Cris LaPierre
Cris LaPierre le 18 Août 2020
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 commentaires

Sclay748
Sclay748 le 18 Août 2020
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?
Sclay748
Sclay748 le 18 Août 2020
I did, and 2020a
Sclay748
Sclay748 le 18 Août 2020
Modifié(e) : Sclay748 le 18 Août 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.
Sclay748
Sclay748 le 18 Août 2020
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)
Sclay748
Sclay748 le 18 Août 2020
ahh that did it, thank you!

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by