MATLAB中的字符串索引:单引号与双引号

时间:2018-04-02 21:39:47

标签: string matlab

我有一个字符串矩阵,如下所示:

string

这些用于以自动方式访问某些文件夹和文件。那么我想要做的是以下(readFiles = [ "11221", "09"; "11222", "13"; "12821", "06"; "13521", "02"; "13522", "13"; "13711", "05"; "13921", "01"; "14521", ".001"; "15712", ".003" ]; 是一个整数):

ii

然后使用双引号生成字符串FileName = strcat('../../Datasets/hc-1/d',readFiles(ii,1),'/d',... readFiles(ii,1),readFiles(ii,2),'.dat'); data(ii,:) = LoadBinary(FileName, 6); (我不知道为什么)。所以它的价值是:

FileName

尝试执行以下操作时,函数FileName = "../../Datasets/hc-1/d13921/d1392101.dat" 会返回错误:

LoadBinary()

但是,如果我使用单引号手动创建字符串lastdot = strfind(FileName,'.'); FileBase = FileName(1:lastdot(end)-1); % This line ,则该功能可以正常工作。

简而言之,如果我尝试索引使用上面的行创建的字符串(FileName)(导致FileName(1:lastdot(end)-1)),MATLAB将返回错误。如果我使用单引号(FileName = "../../Datasets/hc-1/d13921/d1392101.dat")手动创建它,则该功能正常工作。

为什么会这样?有没有办法解决它(即将双引号字符串转换为单引号字符串?)

1 个答案:

答案 0 :(得分:4)

双引号是String数组,而Single是Char数组。您可以使用函数char将字符串数组转换为char数组。 所以你要写:

CharFileName = char(FileName)

它应该解决你的问题。