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

Ten*_*ero 4 string matlab

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

readFiles = [   
            "11221", "09";
            "11222", "13";
            "12821", "06";
            "13521", "02";
            "13522", "13";
            "13711", "05";
            "13921", "01";
            "14521", ".001";
            "15712", ".003"
            ];
Run Code Online (Sandbox Code Playgroud)

这些用于自动访问某些文件夹和文件。然后,我想做的是以下操作(带有ii一些整数):

FileName = strcat('../../Datasets/hc-1/d',readFiles(ii,1),'/d',...
                     readFiles(ii,1),readFiles(ii,2),'.dat');
data(ii,:) = LoadBinary(FileName, 6);
Run Code Online (Sandbox Code Playgroud)

FileName然后使用双引号生成字符串(我不确定为什么)。因此其值为:

FileName = 

"../../Datasets/hc-1/d13921/d1392101.dat"
Run Code Online (Sandbox Code Playgroud)

LoadBinary()尝试执行以下操作时,该函数返回错误:

lastdot = strfind(FileName,'.');
FileBase = FileName(1:lastdot(end)-1); % This line 
Run Code Online (Sandbox Code Playgroud)

但是,如果我FileName使用单引号手动创建字符串,则该功能可以正常运行。

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

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

Jea*_*tan 5

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

CharFileName = char(FileName)
Run Code Online (Sandbox Code Playgroud)

它应该可以解决您的问题。