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
James Tursa
2018년 5월 23일
No. diff() does row{i}-row{i-1} just like you apparently want.
Stephen23
2018년 5월 23일
[X(2,:)-X(1,:); X(3,:)-X(2,:); ... X(p,:)-X(p-1,:)]
which seems to match what you asked for.
Ian Loveless
2018년 5월 23일
답변 (1개)
James Tursa
2018년 5월 23일
편집: James Tursa
2018년 5월 23일
Just negate the usual diff() result. E.g.,
x = your matrix
result = -diff(x);
댓글 수: 6
Ian Loveless
2018년 5월 23일
James Tursa
2018년 5월 23일
Really? Have you tried it?
Ian Loveless
2018년 5월 23일
James Tursa
2018년 5월 23일
편집: James Tursa
2018년 5월 23일
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?
"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.
Ian Loveless
2018년 5월 25일
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!