# Any tips for bsxfun and repeated calculation?

조회 수: 1(최근 30일)
Marie 2017년 10월 29일
댓글: Cedric Wannaz 2017년 10월 30일
Hello,
I am currently using bsxfun to subtract the first column from matrix A from matrix A itself, which is straightforward. C=bsxfun(@minus,A,B); Say A= [1 2 3; 3 4 1; 1 5 7] and B = [1 3 1]'
I want to do the same for each column and separately stack up the output vertically one matrix after another. In this example, the resulting matrix would thus be:
D= [0 1 2; 0 1 -2; 0 4 6; -1 0 1; -1 0 -3; -4 0 2; -2 -1 0; 2 3 0; -6 -2 0]

댓글을 달려면 로그인하십시오.

### 채택된 답변

Cedric Wannaz 2017년 10월 29일
편집: Cedric Wannaz 2017년 10월 29일
If you have MATLAB R2016b or above, BSXFUN was replaced by automatic expansion and you can do it as follows:
>> D = repmat( A, 3, 1 ) - A(:)
D =
0 1 2
0 1 -2
0 4 6
-1 0 1
-1 0 -3
-4 0 2
-2 -1 0
2 3 0
-6 -2 0
otherwise, almost the same as your first solution:
>> D = bsxfun( @minus, repmat( A, 3, 1 ), A(:) ) ;
Both are based on the fact that indexing A linearly will read it column first:
>> A(:)
ans =
1
3
1
2
4
5
3
1
7
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
Cedric Wannaz 2017년 10월 30일
My pleasure!

댓글을 달려면 로그인하십시오.

### 범주

Find more on Code Performance 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!

Translated by