Index location of certain dates with find and a loop
2 次查看(过去 30 天)
显示 更早的评论
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!
0 个评论
回答(2 个)
David Hill
2022-8-24
[~,idx]=ismember(TargetDates,t_list);%only provides first occurance
2 个评论
David Hill
2022-8-25
You can see without a good description and sample data set we are guessing what you want or making wrong assumptions.
VBBV
2022-8-25
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
3 个评论
VBBV
2022-8-25
for ii = 1:size(TargetDates,1)
Use the above in for loop. What is size of TargetDates?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!