MATLAB’;单元阵列中倍频程的选择
我正在尝试运行一个八度的MATLAB代码。有一个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。我想提取末
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);