Finding the difference between columns in matrix without loops

29 次查看(过去 30 天)
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 个评论
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 中查找有关 Language Fundamentals 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by