Find maximum value in a column of each cell in a large set of cell array?
조회 수: 7 (최근 30일)
이전 댓글 표시
I have a large cell array (e.g., 35598x1 cell). Each cell consists of mxn double (e.g., 26x5 double). I would like to find maximum value in nth column of each cell (let's say 5th column). How do I do that? Is it possible to do without using a loop as it is taking so much of time. Any help will be highly appriciated. Thank you.
댓글 수: 3
Dyuman Joshi
2023년 3월 8일
Loops if used properly can be very efficient.
What have you tried? Show us your code and attach the data using the paperclip button.
채택된 답변
추가 답변 (1개)
Dyuman Joshi
2023년 3월 8일
편집: Dyuman Joshi
2023년 3월 8일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!