How to subtract elements in a matrix
Show older comments
Hello,
I have a matrix and I need to subtract every element from each other in each row. So, for example, if I have a matrix A=[1 2 3; 4 8 9] the result should be for example this B=[1 2 1; 4 5 1] - the sequence is not important. But I need to know that the result in the matrix B corresponds to a particular elements' subtraction in matrix A. So if I have for example a subtraction of 2-1, which is A(1,2)-A(1,1) in matrix A and the result is 1 in matrix B I need to know that 1 corresponds to A(1,2)-A(1,1) and keep track of it.
I have tried to do it with cycles and also with a "bsxfun" function but unfortunately can't get the correct result.
g=[1 3 8; 4 6 2];
[u,v]=size(g);
for i=1:u
for j=1:v
a(i,j)=bsxfun(@minus,g(i,j),g(i,j)');
end
end
I'll be glad if anyone can help me. Thanks
4 Comments
KL
on 21 Oct 2017
A has 1 2 and 3 in first row. If you say " I need to subtract every element from each other in each row".. then that means 1-2-3 for the first element, 2-1-3 for the second element, 3-2-1 for the thir element. But your B looks totally different. What exactly do you mean?
Jakub Nosek
on 21 Oct 2017
It's still not consistent with your expected result in B! Your A is
A = [1 2 3; 4 8 9];
and your expected B is
B = [1 2 1; 4 5 1];
if you want to subtract every element from each other (even if you store the absolute value), your B should rather be,
B = [4 2 0; 13 5 3]
Do you understand?
Jakub Nosek
on 21 Oct 2017
Accepted Answer
More Answers (1)
Ok, I guess you want to subtract following column with the current column,
B = circshift(A,-1,2)-A
But your expected B rather looks like the result of,
B = [A(:,2)-A(:,1) A(:,3)-A(:,1) A(:,3)-A(:,2)]
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!