How to subtract elements in a matrix
50 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
KL
2017 年 10 月 21 日
編集済み: KL
2017 年 10 月 21 日
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?
採用された回答
Roger Stafford
2017 年 10 月 21 日
You don't need a for-loop.
C = nchoosek(1:size(A,2),2);
B = A(:,C(:,2))-A(:,C(:,1));
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!