- 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 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuestas (1)
Jan
el 23 de Nov. de 2021
Editada: Jan
el 23 de Nov. de 2021
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 comentarios
Ver también
Categorías
Más información sobre Cell Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!