Matlab是一种更有效的搜索单元数组中字符串的解决方案

时间:2013-07-16 07:39:31

标签: regex arrays string matlab

我想在字符串A(300.000 x 7)的单元格数组的两列中搜索字符串向量。

 string=[53716;59428;58221;679854].

以下是代码:

y=arrayfun(@(x)~cellfun(@isempty,regexp(A(:,3:4),string(x))),1:numel(string),'uni',false);

y=cat(1,y{:});

此问题类似于How to search for a string in cell array in MATLAB?和此问题Searching cell array with regex

然而,此解决方案需要数小时。有谁知道一种更有效的方法来执行相同的操作?

1 个答案:

答案 0 :(得分:2)

您正在将字符串与双精度数进行比较(“string”是双数组);那是你想做的吗?如果没有,您可以使用string_chars=arrayfun(@(x) sprintf('%d',string(x)),1:length(string),'uni',false);

为避免regexp,您可以使用strcmp:

result = zeros(size(A(:,3:4)));
for v=1:length(string_chars)
    result=result+v.*strcmp(A(:,3:4),string_chars(x)); % Should string be a cell here, btw?
end

我不知道在这里添加结果是否适合您的使用,但您可以根据需要进行调整。这将设置结果元素以对应string_chars的每个元素。