2011-05-12 9 views
2

を機能させる、 私は次のような問題があります。質問:スプリットパラメータとして渡す文字列がちょっと

私は特定のコマンドに使用する
str='foo bar' 

を私はMathWorks社のMATLABでの文字列を持っています(従って mex(..., 'foo bar')として)一つのパラメータとしてMEXハンドル strので働かない
mex(..., str) 

。これを行う方法を、そのMATLABはそのような関数呼び出しとしてそれを認識します。私は、これは2つのパラメータで、この特定の例にはハードコードされません

mex(..., 'foo', 'bar') 

、それはまた、文字列がstr='foo bar blupp'に展開時間を来ることができました - >mex(..., 'foo', 'bar', 'blupp')として渡します。

ありがとうございます!

+0

オーケーとまったく同じです

>> x = 'foo bar baz' x = foo bar baz >> xc = strread(x, '%s') xc = 'foo' 'bar' 'baz' >> fprintf('Hello: %s\n', xc{:}) Hello: foo Hello: bar Hello: baz 

'str'を文字列に追加します。コマンドとして文字列を評価するより! – tim

答えて

3

strreadを使用してセル配列に変換し、次に{:}インデックスを付けて「カンマ区切りリスト」に展開します。内のすべての単一のパラメータをループより `MEX(...、 'で変数を初期化します。最後の行は、私は次のように今、自分自身をそれをしなかった

fprintf('Hello: %s\n', 'foo', 'bar', 'baz') 
+0

evalを使用するよりも洗練された素敵な感謝:) – tim

+0

" eval "を避ける方法はほとんどあります。 – Edric

+0

ええ、ちょうど方法を知っている必要があります。私は '{:} 'の構文を知らず、そのようなものを探す方法を知らない。これはどういう名前ですか?コマンドを知った後でも、私はそれについて読んでいますが、googleは 'matlab {:} 'を検索するときにそれを認識しません。 – tim

関連する問題