2013-06-24 3 views
1

Я загрузил определенные массивы в matlab, и я хочу использовать средства и прочее, но моя проблема в том, что 'M' , который является переменной (он находится в код, который я подключил) рассматривается как char, а не как массив (который он на самом деле). Как использовать M, массив вместо M, char?matlab - необходимо загрузить файл, имя файла которого хранится в переменной

kk=[]; 
files = dir('*.dat'); 
for i=1:length(files) 
    eval(['load ' files(i).name]) 
    M=files(i).name; 
    load(M) 
    p=mean(M,2); 
    kk=[kk p]; 
end 
mn= mean(kk,2); 
+0

вы пробовали 'нагрузки (М (:)) или' нагрузки (М (:) ') '? Также в чем смысл линии 'eval' или это то, от чего вы пытаетесь избавиться? – Dan

+0

См. [Этот вопрос] (http://stackoverflow.com/questions/17030172/load-multiple-mat-files-for-processing) - это очень похоже. – user2469775

ответ

2

Несколько комментариев:

  1. Вы можете load в переменную M вместо присвоения имени файла M

    >> M = load(files(ii).name); % load the file into a matrix M 
    
  2. Если вы хотите, чтобы вычислить mean всех чисел хранятся во всех файлах, то mean([mean(M1,2) mean(M2,2) ...]) не обязательно mean w ты хочешь.
    Если в разных матрицах имеется различное количество столбцов, вы не вычисляете желаемый количеств. Убедитесь, что вы вычислите нужное количество, которое ищете.

  3. Не используйте eval: нет необходимости, делает код трудно читать и трудно поддерживать и отладки.

  4. Не выращивайте массив внутри петли: kk = [kk p];. Такое поведение убивает Производительность Matlab, потому что ему нужно перераспределить kk на каждой итерации. Предварительно выделите память, необходимую для kk перед циклом - вы увидите значительное ускорение.

  5. В Matlab, it is best not to use i as a variable name.

0

Почему бы не использовать importdata функции с некоторой обработкой текста для имени файла:

M=importdata(['/path/to/file/' num2str(j) '.dat']) 

или

M=load(['/path/to/file/' num2str(j) '.dat']) 

Кроме того, вы можете попробовать dlmread в вашем случае. Я думаю, что load подходит для файлов MAT. Вот сравнение различных способов:

http://www.mathworks.nl/help/matlab/import_export/ways-to-import-text-files.html