2012-05-09 8 views
2

私は最近Matlabリビジョンを2007aから2012aに更新しましたが、R2007aのコードでは問題なく走っています。具体的にdir('./folder')dir( './ folder')によって返されたMatlab構造を操作する

例で返されたファイル名の構造に関する:

R2007aでこのコードを実行する
X = dir('./folder'); 
p = X(:).name; 

、pは、そのフォルダ内のすべてのファイル名が含まれている、しかし、R2012aで​​pは唯一の名前が含まれていますX.namesの最初のファイル。私も試してみました:

p = X.name; 

p = X(:,1).name; 

は、すべてがファイル名の希望リストを生成しません。

誰でもこの問題が発生していますか?誰かが私を正しい方向に向けることができますか?ありがとう!

+3

、私は疑う 'P = {X.name} 'は、' p {i} 'が' i'番目のパスとなるように 'p'をセル配列に変換します。 –

+0

@ mathematical.coffee:私はあなたが同じことを考えているのを見ます。はい、うまくいきます。 – Jonas

答えて

6

私はR2007aがそれを行うことができたはずであることに驚いています。とにかく、何を常に働いていることはセル配列にCATENATEすることです:私はテストするために私にR2012を持っていない(ちょうどオクターブをし、私はそれがエミュレートどのバージョンかわからない)

p = {X.name}; 
+0

素晴らしい作品です!しかし、なぜX.nameがまだセル配列であると考えられていないのか分かりません。私は構文がちょうどそのように動作することを受け入れることができますが、括弧が必要な特定の理由はありますか? X.nameがセル配列の場合、どの情報を追加しますか? – GPSmaster

+0

@GPSmaster: 'X'は構造体の配列です。' X(i).name'は文字列であり、セル配列ではありません。 'X.name'は' {X(1).name、X(2).name、 'など}と書かれたかのように、中括弧で連結された複数の出力引数を返します。 – Jonas

+0

たとえば、class()関数私が遭遇したすべてのオブジェクトで動作しますが、X.nameの場合は、X.nameがかっこで囲まれている場合にのみ "セル"を返します。それ以外の場合はエラーを返します。 – GPSmaster

関連する問題