Matrix column subtraction problem

조회 수: 3 (최근 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 CenterFile Exchange에서 Linear Equations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by