Будучи встроенной функцией 1 , textscan
, вероятно, самый быстрый вариант:
result = textscan(A{1},'%f','Delimiter',';');
Вот небольшой тест, показывающий, что:
A = repmat('1; 23245675; -234567; 123456; 0',1,100000); % a long string
regexp_time = timeit(@ () regexp(A,';','split'))
strsplit_time = timeit(@ () strsplit(A,';'))
split_time = timeit(@ () split(A,';'))
textscan_time = timeit(@ () textscan(A,'%f','Delimiter',';'))
результат:
regexp_time =
0.33054
strsplit_time =
0.45939
split_time =
0.24722
textscan_time =
0.057712
textscan
- самый быстрый и в ~ 4,3 раза быстрее, чем следующий метод (split
).
Это самый быстрый вариант независимо от длины строки, которую нужно разделить (обратите внимание на логарифмическую ось оси x):
1"Встроенная функция является частью исполняемого файла MATLAB. MATLAB не реализует эти функции на языке MATLAB. Хотя большинство встроенных функций имеет файл .m, связанный сдля них этот файл содержит только документацию для функции ".(из документации)