Speeding up comparison using strcmp
이전 댓글 표시
Hello! I have a list of approximately 2 million records and I would like to compare the records with a list of devices which generates those records. My code is as follows where "c" is the list of records and "device" is the list for distinct devices:
for ii = 1:length(device)
idx = ( strcmp(c,device(ii,:)) );
lidx = find(idx);
devid{ii} = lidx;
end
The problem is the above code takes too long time (more than an hour). Would you please tell me know how to reduce execution time?
Many thanks!
댓글 수: 2
David Sanchez
2015년 1월 13일
What do you mean by "list".
Are c and device sell arrays?
채택된 답변
추가 답변 (1개)
David Sanchez
2015년 1월 13일
If you have getnameidx available in your system, you might transform your device to a cell:
device_cell = celstr(device);
and then look for their position within c:
device_positions = getnameidx(c,device_cell);
which will return the position of your devices within the c cell
댓글 수: 3
Titus Edelhofer
2015년 1월 13일
Hi David,
this function is from Financial Toolbox. And although it generally speaking is doing what Yongmin wants, it does not handle the multiple occurrences (from the help: NOTE: It will not find multiple occurrences of a name ...). Titus
Titus Edelhofer
2015년 1월 13일
카테고리
도움말 센터 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!