如何在Matlab中对这个字符串拆分函数进行矢量化

Mar*_*n08 1 matlab

如何在Matlab中对此strsplit函数进行矢量化以使其运行得更快?谢谢

function parts = strsplit(splitstr, str)
  splitlen = length(splitstr);
  k = strfind(str, splitstr);
  parts = cell(length(k)+1, 1);
  s = 1;

  if isempty(k)
    parts{1} = str;
    return
  end

  for i=1:length(k)
    parts{i} = str(s : k(i)-1);
    s = k(i) + splitlen ;
  end

  parts{end} = str((k(end) + splitlen) : end); 
Run Code Online (Sandbox Code Playgroud)

Jon*_*nas 6

您可以通过调用TEXTSCAN来替换您的功能.

str = 'testxyztest2xyztest3';
splitStr = 'xyz';
out = textscan(str,'%s','delimiter',splitStr,'multipleDelimsAsOne',1)
out{1}
ans = 
    'test'
    'test2'
    'test3'
Run Code Online (Sandbox Code Playgroud)