2012-06-19 4 views
1

У меня есть 30 TXT файлы с данными И я хочу, чтобы создать на векторах лету от файлов с именем «имя файла»Переменные переменные в Matlab

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 дает мне «Неопределенная функция eval» для входных аргументов типа «cell». Ошибка?

Моя структура файла данных, как

ind.01.AGE.txt

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

В конце концов, я хочу, чтобы достичь этого

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

Как я могу это сделать ? Спасибо.

+0

Похожие вопросы: [Динамические переменные matlab] (http://stackoverflow.com/q/7362265/97160), [Использование Strcat для создания имен динамических переменных] (http://stackoverflow.com/q/9082031/97160) – Amro

ответ

4

Чтобы поместить переменные в основном рабочем пространстве, использовать assignin:

assignin('base', v, qdata); 

Как вы можете видеть в assignin documentation, за исключением некоторых случаев назначения вы можете использовать evalin.

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 
0

Read Mathworks TechNote 1103 о том, почему вы должны избегать использования Eval, как вы делаете. Альтернативы включают в себя массивы ячеек или структуры.

Смежные вопросы