2015-03-24 1114 views
0

我有一些數據在單元陣列,Matlab的 - 使用錯誤保存無法創建「_」,因爲「_____」不存在

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命令可以正常工作。

不幸的是我還是不明白第一種情況是什麼問題。關於正在發生的事情以及可能的解決方案的任何建議?

回答

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

(這爲我工作)。

相關問題