- cellfun('isempty', f1) is faster than cellfun(@isempty, f1), but it does not work with strings. Are the inputs char vectors or strings?
- length(nomatch(nomatch == 0)): Faster: numel(s) - sum(nomatch).
- nomatch = cellfun(@isempty, strfind(s,n)): Faster: nomatch = ~contains(s, n)
how can I use a loop instead of cellfun
조회 수: 2 (최근 30일)
이전 댓글 표시
function [out] = motifsupport (s,n)
% Returns indicies of found targets.
f1 = strfind(s,n);
% Returns all the not matching strings.
nomatch = cellfun(@isempty, f1);
match = length(nomatch(nomatch == 0));
out = match/length(f1);
댓글 수: 0
답변 (1개)
Jan
2021년 11월 23일
편집: Jan
2021년 11월 23일
Why do you want to use a loop? To improve the speed? Then there are better methods:
function out = motifsupport(s,n)
out = sum(contains(s, n)) / numel(s);
end
Is there still a need to use a loop?
function out = motifsupport(s, n)
count = 0;
for is = 1:numel(s)
count = count + any(strfind(s{is}, n));
end
out = count / nuzmel(s);
end
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Cell Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!