【问题标题】:Matlab - Error using save Cannot create '_' because '_____' does not existMatlab - 使用保存出错无法创建“_”,因为“_____”不存在
【发布时间】:2015-03-24 21:12:09
【问题描述】:

我在元胞数组中有一些数据,

data2={[50,1;49,1;26,1];...
    [36,2;12,2;37,2;24,2;47.3,2];}

以及另一个元胞数组中的名称,

names2={'xxx/01-ab-07c-0fD3/0';'xxx/01-ab-07s-0fD3/6';}

我想提取数据的一个子集,

data2_subset=data2{1,:}(:,1);

然后是一个临时文件名,

tempname2=char(names2(2));

将子集保存到文本文件中

save (tempname2, 'data2_subset', '-ASCII');

但我收到此错误消息:_

Error using save
Cannot create '6' because 'xxx/01-ab-07s-0fD3' does not exist.

为了了解发生了什么,我创建了一个名称更简单的模拟数据集:

names={'12-05';'14-03'};
data={[50,1;29,1;25,1];[35,2;22,2;16,2;38,2];[40,3;32,3;10,3;44,3;43,3];};
data_subset=data{1,:}(:,1);
tempname=char(names(2));
save (tempname, 'data_subset', '-ASCII');

在这种情况下,保存命令可以正常工作。

不幸的是,我仍然不明白第一种情况的问题所在。关于正在发生的事情以及可能的解决方案有什么建议吗?

【问题讨论】:

    标签: matlab save cell-array


    【解决方案1】:

    MATLAB 将正斜杠 (/) 解释为目录分隔符,并将 6 解释为预期的文件名(您的第二个示例没有此斜杠问题)。 由于相对目录树xxx/01-ab-07s-0fD3/ 不存在,MATLAB 无法创建文件。

    要解决此问题,您可以使用mkdir() 预先创建目录:

    >> pieces = strsplit(tempname2,'/');
    >> mkdir(pieces{1:2});
    >> save(tempname2, 'data2_subset', '-ASCII');
    

    或将/ 替换为其他良性符号,例如_

    >> tempname3= strrep(tempname2,'/','_');
    >> save (tempname3, 'data2_subset', '-ASCII');
    

    (对我有用)。

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 2019-08-18
      • 2011-05-10
      • 2023-04-01
      • 2019-05-12
      相关资源
      最近更新 更多