1

データを含む30個のtxtファイルがあり、そのファイルから「ファイル名」という名前のベクターをオンザフライで作成したい

pathforindependents = 'C:\MatLab\independent\'

independents = dir(fullfile(pathforindependents,'ind*.txt'))              

for i = 1:length(independents)

    filename = independents(i).name;
    r=regexp(filename,'\.','split');
    qnumber = r(2)
    qtitle=r(3)

    qpath = strcat(pathforindependents,filename)
    qdata = load(qpath)

    mtrxPrefix = 'mtrx_';

    v = strcat(mtrxPrefix,qtitle);

    eval(???????????????????????)

end

しかし、どうすればいいのかわかりません。何を試しても、Matlab は「タイプ 'cell' の入力引数に対して未定義の関数 'eval'」を返します。エラー?

私のデータファイル構造は次のようなものです

ind.01.AGE.txt

0
1
0
0
0
1
1
0
1
...

最後はここまでたどり着きたい

mtrx_AGE =
0
1
0
0
0
1
1
0
1
...

どうすればできますか?ありがとうございました。

4

3 に答える 3

4

変数をベース ワークスペースに配置するには、 assignin を使用します

 assignin('base', v, qdata);

assignin のドキュメントでわかるように、特定の割り当てのケースでは、 evalinを使用したい場合があります。

于 2012-06-19T09:08:09.037 に答える
1

sprintf で構造体内のフィールドを使用して、その場で変数に名前を付けることができます。

for i = 1:100
   my_struct.(sprintf('A%s%i','filename',i)) = i^2
end

なるだろう

my_struct.Afilename1 = 1
my_struct.Afilename2 = 4
my_struct.Afilename3 = 9
于 2012-06-19T09:40:34.443 に答える
0

EVALの使用を避けるべき理由については、MathworksTechNote1103をお読みください。代替案には、セル配列または構造が含まれます。

于 2012-06-19T13:41:12.127 に答える