MATLAB Answers

John Doe

Finding the difference between columns in matrix without loops

Asked by John Doe
on 11 May 2013
Accepted Answer by Matt J

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

per isakson
on 11 May 2013

... difference between each column ... what exactly does that mean?

John Doe
on 11 May 2013

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.

Products

No products are associated with this question.

1 Answer

Matt J
Answer by Matt J
on 11 May 2013
 Accepted answer
 firstmatrix=diff(res,1,2);
 secondmatrix=100*bsxfun(@rdivide,firstmatrix,res(:,1:end-1));

  1 Comment

John Doe
on 11 May 2013

Thanks =)


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today