Index location of certain dates with find and a loop
조회 수: 1 (최근 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!