Finding the difference between columns in matrix without loops

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 Comments

... difference between each column ... what exactly does that mean?
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.

Sign in to comment.

 Accepted Answer

firstmatrix=diff(res,1,2);
secondmatrix=100*bsxfun(@rdivide,firstmatrix,res(:,1:end-1));

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 11 May 2013

Community Treasure Hunt

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

Start Hunting!