# Find maximum value in a column of each cell in a large set of cell array?

5 views (last 30 days)

Show older comments

##### 3 Comments

Dyuman Joshi
on 8 Mar 2023

Loops if used properly can be very efficient.

What have you tried? Show us your code and attach the data using the paperclip button.

### Accepted Answer

### More Answers (1)

Dyuman Joshi
on 8 Mar 2023

Edited: Dyuman Joshi
on 8 Mar 2023

Preallocate data accordingly for outputs of big size -

load Data.mat

f1 = @() loopprealloc(alpha200plus);

f2 = @() simpleloop(alpha200plus);

f3 = @() funcell(alpha200plus);

%checking if outputs are equal or not

isequal(f1(),f2(),f3())

fprintf('time taken by loop with preallocation = %f secs', timeit(f1))

fprintf('time taken by loop WITHOUT preallocation = %f secs', timeit(f2))

fprintf('time taken by cellfun = %f secs', timeit(f3))

function y = loopprealloc(x)

%Preallocation

y=zeros(size(x));

for k=1:size(x,1)

y(k,1) = max(x{k,1}(:,5));

end

end

function y = simpleloop(x)

for k=1:size(x,1)

y(k,1) = max(x{k,1}(:,5));

end

end

function y = funcell(x)

y = cellfun(@(in) max(in(:,5)), x);

end

##### 1 Comment

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!