times function for argument of type cell?

I have an argument of type cell (2785 x 20) and I need to multyply every cell per 100 and divide it per 785. Thus I need a function like times for vectors

 Accepted Answer

It is necessary to include the cell array as an argument to cellfun:
C = num2cell(randi(9,4, 5))
C = 4×5 cell array
{[2]} {[2]} {[7]} {[7]} {[2]} {[9]} {[8]} {[1]} {[5]} {[4]} {[1]} {[4]} {[4]} {[9]} {[7]} {[3]} {[5]} {[8]} {[7]} {[4]}
percentages = cellfun(@(x)times(x,100/787), C)
percentages = 4×5
0.2541 0.2541 0.8895 0.8895 0.2541 1.1436 1.0165 0.1271 0.6353 0.5083 0.1271 0.5083 0.5083 1.1436 0.8895 0.3812 0.6353 1.0165 0.8895 0.5083
.

4 Comments

If I use my data that are already cell arrays it says
Undefined function 'times' for input arguments of type 'cell'.
percentages = cellfun(@(x)x*(100/787), matrix_substances, 'uniform', 0)
Operator '*' is not supported for operands of type 'cell'
What is the output of
unique(cellfun(@class, matrix_substances, 'uniform', 0))
The message you are getting suggests that there is at least one location inside matrix_substances where the entry is a cell array instead of being a single number or [] .

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!