The use of cell array with bsxfun, that would return cell array.
이전 댓글 표시
Hello,
I have two cell arrays x1{1x499}(1x5) and x2{1x499}(1x5) with variables of gpuArray and would like to subtract x2 from x1 and should return cell array x3{1x499}(1x5). I can achieve this with cellfun, but it is quite slow, especially when working with bigger arrays. Is there a way to make it work with bsxfun, because it can use multithreads? If I use bsxfun x3=bsxfun(@minus,[x1{:}],[x2{:}]), however it returns array of size (1x2495).
댓글 수: 8
Adam
2018년 6월 20일
Can you not convert your cell array to a numeric array since it appears all cells have a regular size? Everything is better with a numeric array than a cell array if it is possible at all.
Mantas Vaitonis
2018년 6월 20일
Mantas Vaitonis
2018년 6월 20일
Adam
2018년 6월 20일
If you are just doing a subtraction of two equal sized arrays why do you need bsxfun anyway?
Mantas Vaitonis
2018년 6월 20일
Adam
2018년 6월 20일
I doubt bsxfun is ever faster than a simple subtraction (or any other operator) on same size matrices. It can certainly be faster and more efficient than using repmat when you want to apply e.g. column-wise addition/subtraction in a 2d matrix, but the raw operators should be at their most optimal and will be overloaded for gpuArrays in an appropriately optimised manner I'm sure (but you can easily test the speed of one method vs another using the timeit function, or even just a tic-tic pair)
Mantas Vaitonis
2018년 6월 20일
Joss Knight
2018년 6월 20일
bsxfun is mostly redundant now anyway because of implicit scalar dimension expansion. Just use the raw operator.
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!