Use of max iteratively on a cell

Hi, I have a 1x4cell (seekeddata_s) with 4 8x7 cells like the attached one (sl_ts). All of them 8x7 but each of them could have a different size of the singles inside. I would like to get 4 8x7 cells with the maximum value from each cell and store the results on a structure.
I have tried the structure like this, but the max function is not working properly:
if true
% code
end
%%%%%%%%%%%%%%%%%%%%%%%%%
sl_data = [] ;
%
% for every file
for ii = 1:4
file_data = seekeddata_s{1,ii} ;
t = C_t{1,ii};
for jj = 1:8
for kk =1: 7
sl_ts = file_data (:,:);
[mo,to] = max(sl_ts{jj,kk}) ;
sl_data = setfield(sl_data,['file_' num2str(ii)],'max_sl',{jj,kk},mo);
sl_data = setfield(sl_data,['file_' num2str(ii)],'sl_ts',{':',':'},sl_ts);
sl_data = setfield(sl_data,['file_' num2str(ii)],'time_ts',{1,':'},t);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4 Comments

You can get max of each cell in a single stretch.....
load time_s.mat ;
k = cellfun(@max,slamming_ts,'UniformOutput', false) ;
I don't get it. You are mixing cell arrays and structures but the how is not entirely clear to me. If you use max() on an array, it will give you the maximum of every column. Is that what you want?
Each cell has a column vector....
I'm trying to store the resulting cells with the maximums on the structure above, where I also store other data.

Answers (1)

Thorsten
Thorsten on 28 Sep 2016
Edited: Thorsten on 28 Sep 2016
I think that a main problem is who to compute the max values.
You can compute the max of each cell as follows:
M = cellfun(@(c) double(max(c)), slamming_ts, 'Uni', false);
Find the empty cells and replace with NaN
E = cell2mat(cellfun(@isempty, M, 'Uni', false));
M(E) = {NaN};
Convert 8 x 7 cell to 8 x 7 matrix:
M = cell2mat(M);

This question is closed.

Asked:

on 28 Sep 2016

Closed:

on 20 Aug 2021

Community Treasure Hunt

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

Start Hunting!