Reordering columns in a matrix
조회 수: 5 (최근 30일)
이전 댓글 표시
Hello,
I want to multiply 2 matrices elemntwise and swap columns 1 and 2 in the result:
A = [1 2 3; 1 2 3; 1 2 3; 1 2 3];
B = -1*ones(size(A));
AB = A.*B;
C = AB(:,[2 1 3]);
I am using 2 steps to do this (lines 3 & 4). How do I do this in a single step (single line of code)?
댓글 수: 1
답변 (5개)
the cyclist
2011년 12월 30일
You cannot index results in that way. See, for example, the accepted answer in this thread about features that are "missing" in MATLAB:
댓글 수: 0
Fangjun Jiang
2011년 12월 30일
If you have to do this, you can use subsref()
a=magic(3)
b=subsref(a,substruct('()', {':',[2,1,3]}))
In your case, it will be
C = subsref(A.*B, substruct('()', {':',[2,1,3]}))
댓글 수: 0
Andrei Bobrov
2011년 12월 30일
circshift(fliplr(A.*B),[0 -1])
댓글 수: 1
Fangjun Jiang
2011년 12월 31일
What a surprise answer, andrei! But I would still go with the subsref() function. After all, it is the function format of the re-arrangement. To challenge you, what if A.*B is a 4x4 or 5x5 matrix but I want to swap the first and second column?
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!