我想在字符串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
然而,此解决方案需要数小时。有谁知道一种更有效的方法来执行相同的操作?
答案 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
的每个元素。