Row subtraction in matrix

I am trying to subtract each row in a matrix from the row after it. The function diff does x_{i} - x_{i+1}, I need to do x_{i}-x_{i-1}. I cannot find anything that will tell me how to do this. I am sure it is something simple that I am just overlooking.

3 Comments

No. diff() does row{i}-row{i-1} just like you apparently want.
The diff help states that for a matrix it returns
[X(2,:)-X(1,:); X(3,:)-X(2,:); ... X(p,:)-X(p-1,:)]
which seems to match what you asked for.
Then I mistyped. Is there a way I can do row{i}-row{i+1}?

Sign in to comment.

Answers (1)

James Tursa
James Tursa on 23 May 2018
Edited: James Tursa on 23 May 2018
Just negate the usual diff() result. E.g.,
x = your matrix
result = -diff(x);

6 Comments

That just gives me the negative of diff(), it does not subtract in the opposite direction.
Really? Have you tried it?
Yes I did. It is the same as my diff() matrix, except each value has "-" in front of it.
So, there appears to be a disconnect of some sort with your description and what you want. Consider this:
>> x = randi(10,3,4)
x =
8 1 7 4
10 9 8 7
7 10 8 2
>> -diff(x)
ans =
-2 -8 -1 -3
3 -1 0 5
It certainly looks to me like the first row of the result is x_row1-x_row2 etc. Similarly for the second row of the result. So for the x shown above, what is the result that you want exactly if it isn't what I have shown?
Stephen23
Stephen23 on 24 May 2018
Edited: Stephen23 on 24 May 2018
"It is the same as my diff() matrix, except each value has "-" in front of it."
That would be exactly correct then. The only difference between these
row(i)-row(i+1)
row(i)-row(i-1)
will be the sign. So if all were positive in the first case, then in the second case all would be negative.
You are all correct, I apologize for my ignorance. I was looking at spacings instead of differences. Thank you for your help and patience.

Sign in to comment.

Products

Release

R2018a

Tags

Asked:

on 23 May 2018

Commented:

on 25 May 2018

Community Treasure Hunt

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

Start Hunting!