Multiply each column of cell array by column vector

조회 수: 1 (최근 30일)
Carmel Howe
Carmel Howe 2015년 10월 26일
댓글: Carmel Howe 2015년 10월 26일
I have a 10x1 cell of separate events with each array having a size 384(time) x 5328(pixel). I want to multiply each column in each cell array by a column vector (C = 384x1). I have tried this code but it's not giving me the correct answer.
A = cell(size(B));
for jj = 1:10
A{jj,1} = B{jj,1},[],1 .* C;
end
Thanks

채택된 답변

Stephen23
Stephen23 2015년 10월 26일
편집: Stephen23 2015년 10월 26일
As per your previous question you would actually be better off keeping your data in a simple numeric array rather than a cell array, so the first thing we will do is to convert it to a numeric array. The solution is then trivial using bsxfun:
>> X = {[1,2,3;4,5,6],[0,2,4;6,8,10]};
>> Y = cat(3,X{:})
Y(:,:,1) =
1 2 3
4 5 6
Y(:,:,2) =
0 2 4
6 8 10
>> C = [2;5]
C =
2
5
>> bsxfun(@times,C,Y)
ans(:,:,1) =
2 4 6
20 25 30
ans(:,:,2) =
0 4 8
30 40 50
This uses efficient vectorized code:

추가 답변 (1개)

Andrei Bobrov
Andrei Bobrov 2015년 10월 26일
A = cell(size(B));
for jj = 1:10
A{jj} = bsxfun(@times,B{jj},C);
end

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by