Accumarray help: extracting matrix min/max based on values in first column.
显示 更早的评论
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."
采纳的回答
更多回答(1 个)
Stephen23
2018-4-24
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 个评论
Evan Watts
2018-4-24
@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
2018-4-25
类别
在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!