Borrar filtros
Borrar filtros

Error Using Horzcat: Dimensions of matrices being concatenated are not consistent

3 visualizaciones (últimos 30 días)
I am receiving the following error message:
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Error in test (line 55)
goodPoints = [goodPoints1, goodPoints2];
where
%
goodPoints1 = find((utcTime >= utcStarts1(jj)) &( utcTime <utcEnds1(jj)));
goodPoints2 = find((utcTime >= utcStarts2(jj)) &( utcTime <utcEnds2(jj)));
goodpoints1 is a 9532x1 double and goodpoints2 is a 8270x1 double
From my understanding this error shows because the two do not have the same number of rows. What alternatives can I use to fix this error? (in the most layman's terms possible!) Thank you for any help!
  2 comentarios
Star Strider
Star Strider el 20 de En. de 2016
Your variables ‘goodPoints1’ and ‘goodPoints2’ are vectors of indices, so their order may be important.
What do you want to do with them?
goyanks1989
goyanks1989 el 20 de En. de 2016
'goodpoints1' and 'goodpoints2' represent two separate time periods that I am trying to plot the associated variables with (I am not interested in the block of time between the 'goodpoints1' and 'goodpoints2')
My previous error was:
%
Index exceeds matrix dimensions.
Error in NonConvective (line 74)
bigDATA(ii, bigDATAstart:(bigDATAstart - 1 +length(goodPoints))) = a(goodPoints);
when I had it formatted like this:
%
goodPoints1=(utcStarts1(jj):1:utcEnds1(jj));
goodPoints2=(utcStarts2(jj):1:utcEnds2(jj));
goodPoints=[(goodPoints1), (goodPoints2)];
%
and I believe the error was in 'a(goodpoints)' as what this was generating corresponded to the actual time value, not the location in the array (ex. the first value would come up as 50000 utc but I want it to be 1)
This is why I fixed the code to
%
goodPoints1 = find((utcTime >= utcStarts1(jj)) &( utcTime <utcEnds1(jj)));
goodPoints2 = find((utcTime >= utcStarts2(jj)) &( utcTime <utcEnds2(jj)))
But now I get the horzcat error because (I think) in goodPoints = [goodPoints1, goodPoints2], the number of rows are different in each one.

Iniciar sesión para comentar.

Respuestas (1)

Star Strider
Star Strider el 20 de En. de 2016
Put them in a cell array instead (note the curly brackets ‘{}’):
goodPoints = {goodPoints1, goodPoints2};
Cell arrays are a bit more difficult to work with (you have to retrieve the elements of the array to calculate with it, for instance), but are quite useful in storing data such as you want to.
  4 comentarios
goyanks1989
goyanks1989 el 20 de En. de 2016
I wish I had a better idea of what I was doing as well. Thank you for your help
Star Strider
Star Strider el 20 de En. de 2016
Editada: Star Strider el 20 de En. de 2016
You need to reference either column of ‘goodPoints’ here. For example:
bigDATA(ii, bigDATAstart:(bigDATAstart - 1 +length(goodPoints{1}))) = a(goodPoints{1});
although I have no idea if that is what you want to do.
My pleasure.

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by