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 个评论
采纳的回答
Matt J
2013-5-11
firstmatrix=diff(res,1,2);
secondmatrix=100*bsxfun(@rdivide,firstmatrix,res(:,1:end-1));
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!