MATLAB’;单元阵列中倍频程的选择

MATLAB’;单元阵列中倍频程的选择,matlab,octave,compatibility,substr,cell-array,Matlab,Octave,Compatibility,Substr,Cell Array,我正在尝试运行一个八度的MATLAB代码。有一个MATLAB函数在倍频程中还不可用。原始代码是 numbers = str2double(extractBetween(dirAndFileNames(:,2), 4, 5)); 我已尝试用此代码替换它 numbers = str2double(substr(dirAndFileNames(:,2), 4, 2)); 它适用于单个字符串,但不适用于单元格数组。我尝试过其他与单元格数组一起工作的函数,如strtrim,strtrunc。我想提取末

我正在尝试运行一个八度的MATLAB代码。有一个MATLAB函数在倍频程中还不可用。原始代码是

numbers = str2double(extractBetween(dirAndFileNames(:,2), 4, 5));
我已尝试用此代码替换它

numbers = str2double(substr(dirAndFileNames(:,2), 4, 2));
它适用于单个字符串,但不适用于单元格数组。我尝试过其他与单元格数组一起工作的函数,如
strtrim
strtrunc
。我想提取末尾的数字,但是strtrunc给出了与我想要的相反的结果。它给出了第一个字母

dirand文件名(:,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
}

正如@cris所建议的,我不得不绕过去

for i = 1:length(dirAndFileNames) 
    numbers{i} = str2double(substr(dirAndFileNames(i,2){1}, 4, 2)) 
end
您可以使用:


是否尝试在单元格数组中的字符串上写入循环?如果要隐藏显式循环,可以使用函数
cellfun
。我尝试过,但对matlab代码来说是新手。对于I=1:length(dirAndFileNames)number{I}=str2double(substr(dirAndFileNames(I,2){1},4,2))end
a = dirAndFileNames(:, 2);
result = cellindexmat(a, 4:5);