Vectorizing multiple string comparison
显示 更早的评论
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 个评论
Walter Roberson
2017-1-27
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
2017-1-27
采纳的回答
更多回答(1 个)
Walter Roberson
2017-1-27
1 个投票
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 个评论
Paolo Binetti
2017-1-27
Walter Roberson
2017-1-27
Flip the order around, ismember(b, a) .
Paolo Binetti
2017-1-28
类别
在 帮助中心 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!