Finding the difference between columns in matrix without loops

조회 수: 63 (최근 30일)
John Doe
John Doe 2013년 5월 11일
I have the results from an iterative process, where the results from each iteration is placed beside eachother, like this:
res =
43.7826 38.8460 38.6889 38.6912 38.6915
107.0735 98.5577 98.1212 98.1170 98.1175
-134.6218 -131.6938 -131.5378 -131.5352 -131.5352
-105.9498 -103.1403 -102.9195 -102.9139 -102.9139
What I want to do is create one matrix that shows the difference between each column, and one matrix that shows the percentage change from one column to the next.
Edit: The first column of the first matrix will be:
diff(:,1) = res(:,2)-res(:,1);
Similar for the second matrix, but there I want the percentage change. This is obviously simple to do using loops, but is there a clever way to do this without loops (maybe using some built-in Matlab functions)?
Thanks.
  댓글 수: 2
per isakson
per isakson 2013년 5월 11일
... difference between each column ... what exactly does that mean?
John Doe
John Doe 2013년 5월 11일
The first column of the first matrix will be
diff(:,1) = res(:,2)-res(:,1);
Similar for the second matrix, but in that one I want the percentage change.

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2013년 5월 11일
firstmatrix=diff(res,1,2);
secondmatrix=100*bsxfun(@rdivide,firstmatrix,res(:,1:end-1));

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by