0

我想在字符串 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{:});

这个问题类似于如何在 MATLAB 中搜索元胞数组中的字符串?和这个用正则表达式搜索单元数组

然而,这个解决方案需要几个小时。有谁知道执行相同操作的更有效方法?

4

1 回答 1

2

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

为避免使用正则表达式,您可以使用 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

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

于 2013-07-16T08:20:02.627 回答