Альтернатива MATLAB's extractBetween для Octave в массиве ячеек - PullRequest
3 голосов
/ 12 октября 2019

Я пытаюсь запустить код MATLAB в Octave. Существует функция MATLAB extractBetween, которая еще не доступна в октаве. Исходный код

numbers = str2double(extractBetween(dirAndFileNames(:,2), 4, 5));

Я пытался заменить его этим кодом.

numbers = str2double(substr(dirAndFileNames(:,2), 4, 2));

Он работает для отдельных строк, но не для массивов ячеек. Я пробовал другие функции, которые работают с массивами ячеек, такие как strtrim, strtrunc. Я хочу извлечь числа в конце, но strtrunc дает противоположное тому, что я хочу. Он дает первые буквы.

dirAndFilenames(:,2) выглядит так:

debug> dirAndFileNames(:,2)
ans =
{
  [1,1] = desktop.ini
  [2,1] = trn01
  [3,1] = trn02
  [4,1] = trn03
  [5,1] = trn04
  [6,1] = trn05
  [7,1] = trn06
  [8,1] = trn07
  [9,1] = trn08
  [10,1] = trn09
  [11,1] = trn10
}

Ответы [ 2 ]

2 голосов
/ 12 октября 2019

Как подсказал @cris, мне пришлось перебраться.

for i = 1:length(dirAndFileNames) 
    numbers{i} = str2double(substr(dirAndFileNames(i,2){1}, 4, 2)) 
end
1 голос
/ 13 октября 2019

Вы можете использовать cellindexmat :

a = dirAndFileNames(:, 2);
result = cellindexmat(a, 4:5);
...