Matrix column subtraction problem

1 回表示 (過去 30 日間)
Jakub Nosek
Jakub Nosek 2018 年 3 月 11 日
コメント済み: Jakub Nosek 2018 年 3 月 11 日
I know this is really basic stuff but unfortunately I can't get to the right solution.
I have for example these 2 matrices:
matrixA=[1 5;5 2;0 0;3 2;3 6]
and
matrixB=[4 5 6;8 5 2;3 3 2;1 2 1;2 5 4]
What I want to do is to subtract all columns in matrixB from column 1 and column 2 respectively in matrixA. So I want to make
matrixC=[1-4 1-5 1-6 5-4 5-5 5-6;5-8 5-5 5-2 2-8 2-5 2-2;....;....;.....]

採用された回答

Roger Stafford
Roger Stafford 2018 年 3 月 11 日
編集済み: Roger Stafford 2018 年 3 月 11 日
C = zeros(5,2*3);
for p = 1:2
for q = 1:3
C(:,3*p+q-3) = A(:,p)-B(:,q);
end
end
Or this:
C = reshape(repmat(reshape(A,5,1,2),1,3,1)-repmat(reshape(B,5,3,1),1,1,2),5,[]);
  4 件のコメント
Roger Stafford
Roger Stafford 2018 年 3 月 11 日
@Jakub: For matrices A and B of general size:
[m,n1] = size(A);
n2 = size(B,2); % size(B,1) must also be m
C = reshape(repmat(reshape(A,m,1,n1),1,n2,1)-repmat(reshape(B,m,n2,1),1,1,n1),m,[]);
Jakub Nosek
Jakub Nosek 2018 年 3 月 11 日
Thanks!

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2018 年 3 月 11 日
[matrixA(:,1)-matrixB,matrixA(:,2)-matrixB]
This might require R2016b or later.
  2 件のコメント
Jakub Nosek
Jakub Nosek 2018 年 3 月 11 日
Thanks, is there any other solution for older versions of MATLAB?
Walter Roberson
Walter Roberson 2018 年 3 月 11 日
cell2mat(arrayfun(@(COLIDX) bsxfun(@minus, matrixA(:,COLIDX), matrixB), 1:size(matrixA,2), 'uniform', 0))

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLinear Equations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by