Use of max iteratively on a cell
Info
This question is closed. Reopen it to edit or answer.
Show older comments
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
KSSV
on 28 Sep 2016
You can get max of each cell in a single stretch.....
load time_s.mat ;
k = cellfun(@max,slamming_ts,'UniformOutput', false) ;
José-Luis
on 28 Sep 2016
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?
KSSV
on 28 Sep 2016
Each cell has a column vector....
Isma_gp
on 28 Sep 2016
Answers (1)
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.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!