Matlab - 使用保存时出错无法创建' _'因为' _____'不存在

时间:2015-03-24 21:12:10

标签: matlab save cell-array

我在单元格数组中有一些数据,

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');

在这种情况下,save命令正常工作。

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

1 个答案:

答案 0 :(得分:2)

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');

(这对我有用)。