Accumarray help: extracting matrix min/max based on values in first column.
Mostrar comentarios más antiguos
I have a matrix of 44222x4 with columns of date, time, flow, and pH respectively. I was trying to use accumarray to sort the min and max pH values for each date. My code is C=accumarray(matrix(:,1),(matrix(:,4),[],@(n){n}).
One of the large problems I have is with accumarray not accepting my matrix(:,4) as a numeric vector. Error text: "Second input VAL must be a full numeric, logical, or char vector or scalar."
Respuesta aceptada
Más respuestas (1)
Stephen23
el 24 de Abr. de 2018
Why not just calculate the min/max directly using accumarray?:
[~,~,idx] = unique(matrix(:,1));
accumarray(idx,matrix(:,4),[],@min)
accumarray(idx,matrix(:,4),[],@max)
3 comentarios
Evan Watts
el 24 de Abr. de 2018
@Evan Watts: you have not told us what class matrix is, but I suspect that it might be a cell array, in which case you will need to convert it to a numeric array before using accumarray. How to convert it depends on how the data is stored inside it: as char vectors, or a numeric values:
vec = str2double(matrix(:,4)); % char vectors vec = cell2mat(matrix(:,4)); % numeric scalars
If you do not have a cell array then you need to tell us what the class is:
class(matrix)
Evan Watts
el 25 de Abr. de 2018
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!