MATLAB Answers

Target just the last added entries to a matrix

3 views (last 30 days)
Vance Blake
Vance Blake on 30 Aug 2019
Commented: Vance Blake on 1 Sep 2019
Hey, I am working with matrices and I wanted to know if there is a standard way/code to target just the last added entries to a matrix. I used the general syntax for appending data points to a matrix (A= [A;B]) and I wanted to know if there was an analogous general method for targetting the last added entries into a matrix. For example, I append 4 sets of coordinates to a matrix and now I want to call just those 4 sets from the matrix and use them for next step in my code. Any help is greatly appreciated.

  4 Comments

Show 1 older comment
Vance Blake
Vance Blake on 30 Aug 2019
okay that was my fallback option if there wasnt antoher way. thanks for the help.
Guillaume
Guillaume on 30 Aug 2019
There is always another way, but your question is not particularly clear.
A(end-n:end, :)
will give you the last n+1 rows of the matrix.
Note that growing a matrix by appending rows in a loop is slow. If you know beforehand how many rows the final matrix is going to be, then preallocating the matrix is a lot more efficient.
Vance Blake
Vance Blake on 30 Aug 2019
Yeah I know that growing dynamically is slow (matlab kindly reminds me every time i run my code) but unfortunately I don't know how big the matrix will be beforehand. But Im not appending the sets of coordinates to the matrix during the loop but after it has been completed.
@Guillaime does your solution only work with a loop ??

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 30 Aug 2019
As commented:
A(end-n:end, :)
will give you the last n+1 rows of the (2D) matrix.
does your solution only work with a loop
Why do you think that? There's no loop involved in that line. It's basic matrix indexing using the end keyword.

  3 Comments

Vance Blake
Vance Blake on 1 Sep 2019
I use n as a variable for the number of points. will this indexing work despite that or can i replace n with a different variable ??
Guillaume
Guillaume on 1 Sep 2019
Have you read the documentation page I linked?
This is really basic indexing. As everything in matlab, the name of the variable is irrelevant. You can call them whatever you want or replace the variable by a hardcoded constant
A(end-n:end, 1) %returns the last n+1 rows of A
A(end-10:end, 1) %returns the last 11 rows of A
somename(end-someothername:end, 1) %returns the last someothername+1 rows of somename
Vance Blake
Vance Blake on 1 Sep 2019
My bad didnt notice the link but thanks for the help.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by