MATLAB Answers

How can I plot 2 vectors of different length?

165 views (last 30 days)
Hello everyone
It could be the question sounds stupid, but I have 32 data (which correspond to averages of 9 measurements) and I want to plot along aprox 50 days
(Because there weren´t measurements some days)
Anyone has an idea of how can I do that? I was thinking by scatter, but appears the same error (different lenghts)
Thank u


Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 12 Jun 2019
Without knowing any constraints you may have, try this:
data = rand(1, 32); % Create Data Vector
x = linspace(0, 50, numel(data)); % Create Independent Variable Vector
plot(x, data)
If your data were calculated with respect to specific days, use a vector of those days as ‘x’. So long as there are exactly 32 of them, you can easily plot them.


Show 2 older comments
Jonathan Bijman
Jonathan Bijman on 12 Jun 2019
Thank u so much both of u (@Walter Roberson and @Star Strider)

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 12 Jun 2019
You know which days had valid measurements. Pass the time coordinate corresponding to those days as the "x" coordinate to plot, if you want a line plot that draws between the missing data.
stem() plot might make sense in some cases.
It is possible to draw in segments. For that purpose, pass in nan as the y coordinates for the missing measurements, and be sure to include a marker type. You want the marker because you might have patterns such as NaN Point NaN and plot() will only draw a line when there are at least two finite points in a row.

  1 Comment

Jonathan Bijman
Jonathan Bijman on 12 Jun 2019
For "y" variable I have this:
nrow = height(datatable);
lastidx = floor(nrow/9) * 9;
Voc_p = mean(reshape(datatable{1:lastidx,7}, 9, []));
it results 32 data
For "x" variable I create a table with all the dates and load the mat file:
When I try to plot with stem:
Appears this error:
Error using stem (line 43)
X must be same length as Y.
Error in Prueba_1 (line 34)

Sign in to comment.