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 Commenti

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?
KSSV
KSSV il 28 Set 2016
Each cell has a column vector....
Isma_gp
Isma_gp il 28 Set 2016
I'm trying to store the resulting cells with the maximums on the structure above, where I also store other data.

Risposte (1)

Thorsten
Thorsten il 28 Set 2016
Modificato: Thorsten il 28 Set 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);

Questa domanda è chiusa.

Richiesto:

il 28 Set 2016

Chiuso:

il 20 Ago 2021

Community Treasure Hunt

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

Start Hunting!

Translated by