# Index location of certain dates with find and a loop

6 views (last 30 days)
Laura Szczyrba on 24 Aug 2022
Commented: David Hill on 25 Aug 2022
Trying to create a simple loop that identifies the index locations where each particular date (TargetDates) matches the date in a larger array of dates (t_list)
t_list --> 1924x1 double
TargetDates --> 267x1 double
----------------------------------------------------------------------------
locs= zeros(length(TargetDates),1); % initialize array of locations, size 267x1
for ii = 1:size(TargetDates,1) % for each date listed in TargetDates (1:267)
locs(ii) = find(round(t_list,6) == TargetDates(ii,1)); % find the index location where rounded t_list matches the date in TargetDates
end
--------------------------------------------------------------------------------
I receive the error: Unable to perform assignment because the left and right sides have a different number of elements.
I am sure it is a silly error that I am just not seeing. Thanks in advance for any advice!

David Hill on 24 Aug 2022
[~,idx]=ismember(TargetDates,t_list);%only provides first occurance
##### 2 CommentsShowHide 1 older comment
David Hill on 25 Aug 2022
You can see without a good description and sample data set we are guessing what you want or making wrong assumptions.

VBBV on 25 Aug 2022
locs= zeros(length(TargetDates),length(t_list)); % change preallocated array size
Change the preAllocated size of locs
locs(ii,:) = find(round(t_list,6) == TargetDates(ii,1)); % find returns a vector of indices that match the condition
As you are comparing the whole t_list with TargetDates you can do above
VBBV on 25 Aug 2022
It seems you are using DateNumber

### Categories

Find more on Numerical Integration and Differential Equations in Help Center and File Exchange

R2021a

### Community Treasure Hunt

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

Start Hunting!