0

文字列 A (300.000 x 7) のセル配列の 2 つの列で文字列のベクトルを検索したいと思います。

 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

文字列を double と比較しています (「string」は double 配列です)。それがあなたのやりたいことですか?そうでない場合は、使用できます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 に答える