How to Filter Rows of Cell Array By Date Range

1 view (last 30 days)
Brian
Brian on 30 Jul 2024
Answered: the cyclist on 30 Jul 2024
Simplied my problem so it's easier to solve. I have a 4x3 array "a" and want to remove rows not within a specified date range. I would like to do this without a loop that would slow down my code. Any suggestions matlab wizards out there?
%Date Range
MinDate = datetime('14-Jul-2024');
MaxDate = datetime('17-July-2024');
%Cell Array
a = cell(4,3);
random = [1 1
2 1
3 3
4 5];
dates = datetime({'10-Jul-2024'
'15-Jul-2024'
'20-Jul-2024'
'16-Jul-2024'});
a(:,3) = num2cell(dates);
a(:,1:2) = num2cell(random);
%How do I filter a by deleting rows not within Date Range? i.e. delete rows 1 & 3 based on the value of a

Answers (1)

the cyclist
the cyclist on 30 Jul 2024
Here is one way:
%Date Range
MinDate = datetime('14-Jul-2024');
MaxDate = datetime('17-July-2024');
%Cell Array
a = cell(4,3);
random = [1 1
2 1
3 3
4 5];
dates = datetime({'10-Jul-2024'
'15-Jul-2024'
'20-Jul-2024'
'16-Jul-2024'});
a(:,3) = num2cell(dates);
a(:,1:2) = num2cell(random);
% Filter
a_filtered = a(isbetween([a{:,3}],MinDate,MaxDate),:)
a_filtered = 2x3 cell array
{[2]} {[1]} {[15-Jul-2024]} {[4]} {[5]} {[16-Jul-2024]}

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!