Invalid data type - converting to cell array to run functions

2 vues (au cours des 30 derniers jours)
Emma Janke
Emma Janke le 21 Oct 2020
Commenté : Emma Janke le 21 Oct 2020
I essentially want to pull the data from timepoints of interest and run the same functions for each "bout of data" even though these bouts are not always the same length. I understand a cell array will be helpful for this, but when I try to write for loop, the data is no longer in 'double' form to perform functions.
How can I convert to cell array but keep the data in 'double' type?
Example failure 1
% tot_dff: vector of data across time
%f_i & f_o : variables corresponding to time on and off for periods of interest in the data
for i=1:length(f_i);
dff{i} = num2cell(tot_dff(1,f_i(i):f_o(i)));
end
X = cellfun(@mean,dff);
Y = cellfun(@max,dff);
Error using sum
Invalid data type. First argument must be numeric or logical.
% In this case dff is 1x46 cell which each cell containing cells corresponding to each data point.
Example failure 2
for i =1:length(f_i);
dff{i} = {tot_dff(1,f_i(i):f_o(i))};
end
X=cellfun(@mean,dff);
Y=cellfun(@max,dff);
%in this case, dff is 1x46 cell array with each cell containing my list of numbers in [ ] . Still can't run the functions on it and get the same error.
When I create my cell array by hand
dff = {tot_dff(1:3),tot_dff(6:10)} ........ this works but will take me forever!
Thank you for your help!

Réponse acceptée

Stephen23
Stephen23 le 21 Oct 2020
Modifié(e) : Stephen23 le 21 Oct 2020
In both cases your code nests a cell array inside a cell array:
dff{i} = num2cell(tot_dff(1,f_i(i):f_o(i)));
% ^^^^^^^^^ ^ % define the RHS as a cell array
% ^ ^ % place the RHS in another cell array
The nesting is superfluous, you only need one cell array (on the LHS), e.g.:
nml = length(f_i);
dff = cell(1,nml); % preallocate!
for k = 1:nml;
dff{k} = tot_dff(1,f_i(k):f_o(k));
end % ^ ^ do NOT make this a cell array !

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by