Multiply each column of cell array by column vector
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Carmel Howe
il 26 Ott 2015
Commentato: Carmel Howe
il 26 Ott 2015
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
Risposta accettata
Stephen23
il 26 Ott 2015
Modificato: Stephen23
il 26 Ott 2015
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:
Più risposte (1)
Andrei Bobrov
il 26 Ott 2015
A = cell(size(B));
for jj = 1:10
A{jj} = bsxfun(@times,B{jj},C);
end
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!