2017-10-04 59 views
0

我想從單元格陣列構建文件名。我想使用sprintf函數,但它不適用於單元格輸入(它適用於字符串數組)。從包含變量的單元格陣列構建文件名

實施例:

foldername = sprintf('''\\STH\\Sth %s\\ABC %s;'',firstvariable,secondvariable); 

輸出:

Error using sprintf 
Function is not defined for 'cell' inputs. 

,其中變量是電池陣列,這樣的:

firstvariable = {'A','B','C'}; 
secondvariable = {'D','E','F'}; 

我還試圖用fullfile功能,但它不」沒有任何變數。這個輸出看起來像這樣:\STH\Sth %s\ABC %s。更何況,我也試過使用strcat函數,但結果是一樣的。

您有任何其他想法如何做到? 謝謝!

+0

那麼你在這個例子中你想創建一個向量文件路徑? ( \ A \ D \ ABC, \ B \ E \ ABC, \ C \ F \ ABC) – Irreducible

+0

輸出應該看起來像'\ STH \ Sth A \ ABC D'。我將在for循環中執行它,因此現在我只需要找到解決方案如何使用單元格數組中的不同變量來爲名稱保存向量。 Sprintf不適用於單元陣列;而fullfile和strcat函數不適用於變量。我的問題是:什麼樣的功能可以做到這一點? – BloodyMary

+0

如果你有一個'for'循環:把兩個想要的變量從它們的單元格中取出一個'char'類型的臨時變量,並在每次迭代時重複。 – Adriaan

回答

0

這是你想要的嗎?

for ii = 1:length(firstvariable) 
    foldername{ii} = sprintf('''\\STH\\Sth %s\\ABC %s;''',firstvariable{ii},secondvariable{ii}); 
end 

輸出是:

foldername = {''\STH\Sth A\ABC D;''} {''\STH\Sth B\ABC E;''} {''\STH\Sth C\ABC F;''} 

使用任何文件夾名稱只是執行以下操作:

foldername{index} % Gives back a string 
foldername(index) % Gives back a cell 
0

您可以通過它們傳遞的兩個單元陣列,以cellfun循環在同一時間:

firstvariable = {'A','B','C'}; 
secondvariable = {'D','E','F'}; 
foldername = cellfun(@(x,y) ['\STH\Sth ' x '\ABC ' y], firstvariable, secondvariable, 'UniformOutput', false); 

這給出

foldername = 
    1×3 cell array 
    '\STH\Sth A\ABC D' '\STH\Sth B\ABC E' '\STH\Sth C\ABC F' 
相關問題