我有一个字符串矩阵,如下所示:
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')手动创建该函数,则该函数正常运行。
为什么会这样?有没有办法解决它(即将双引号字符串转换为单引号字符串)?
双引号是字符串数组,而单引号是Char数组。您可以使用函数将字符串数组转换为char类型char。所以你会写:
CharFileName = char(FileName)
Run Code Online (Sandbox Code Playgroud)
它应该可以解决您的问题。