Vectorizing multiple string comparison
Ältere Kommentare anzeigen
Is there a way to significantly speed up this loop, perhaps by vectorizing it? Inputs in attachment. I do not have a Matlab version with "string" functions.
d = a';
for i = 1:numel(a)
d{i} = c(strcmp(a{i}, b), :);
end
I tried working my way from the inner part with cellfun, but either I am not getting it right or it is not the good approach:
aux = cellfun(@strcmp, a, b); % does not work
2 Kommentare
Walter Roberson
am 27 Jan. 2017
That file is an Octave file that would take a bunch of work to read in MATLAB.
This is the wrong resource to be asking about performance improvement for Octave.
Paolo Binetti
am 27 Jan. 2017
Akzeptierte Antwort
Weitere Antworten (1)
Walter Roberson
am 27 Jan. 2017
1 Stimme
ismember can be used between cell arrays of strings. The two-output version can be used to find the indices, which you can then use to index into c.
3 Kommentare
Paolo Binetti
am 27 Jan. 2017
Walter Roberson
am 27 Jan. 2017
Flip the order around, ismember(b, a) .
Paolo Binetti
am 28 Jan. 2017
Kategorien
Mehr zu Structures finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!