2017-10-04 12 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機能を使用しようとしましたが、それはdoesnの任意の変数を取る。この出力は\STH\Sth %s\ABC %sのようになります。何より、私もstrcat関数を使用しようとしましたが、結果はかなり同じです。

どうすればいいですか? ありがとう!

+0

です。この例では、3つのファイル名パスのベクトルを作成しますか? ( \ A \ D \ ABC、 \ B \ E \ ABC、 \ C \ F \ ABC) – Irreducible

+0

出力は '\ STH \ Sth A \ ABC D'のようになります。私はfor-loopでやっていますので、今は、セル配列から異なる変数を持つ名前のベクトルを保存する方法を見つけるだけです。 Sprintfはセル配列では機能しません。 fullfile関数とstrcat関数は変数で動作しません。私の質問は:どのような機能がそれを行うことができるのですか? – BloodyMary

+0

とにかく 'for'ループがある場合:' char'型の一時変数に2つの必要な変数をセルから取り出し、すべての繰り返しで繰り返します。 – 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に2つのセル配列を渡すことができます同時に:

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' 
関連する問題