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 件のコメント

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 日

1 投票

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

質問済み:

2013 年 5 月 11 日

Community Treasure Hunt

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

Start Hunting!

Translated by