Ваша первая строка приводит к тому, что myfiles является структурным массивом с компонентами, которые вы определите, когда наберете «help dir». В частности, имена всех файлов содержатся в элементе структуры myfiles (i) .name. Чтобы отобразить все имена файлов, введите myfiles.name. Все идет нормально. В цикле for вы используете 'fileread', но fileread (см. Справку fileread) возвращает строку символов, а не фактические значения. Я назвал ваш файл-прототип .lvm DinaF.lvm, и я написал очень простую функцию для чтения данных в этом файле, пропустив первые три строки и сохранив следующую матрицу, в которой предполагается, что в ней есть 4 столбца. массив с именем T внутри функции и arrayT в основной программе
Вот модифицированный скрипт, в который включена функция read_lvm для чтения вашего lvm-файла модели.
'1' в первой строке сообщает Octave, что в сценарии есть нечто большее, чем просто следующая функция: основная программа также должна интерпретироваться.
1;
function T=read_lvm(filename)
fid = fopen (filename, "r");
%% Skip by first three lines
for lhead=1:3
junk=fgetl(fid);
endfor
%% Read nrow lines of data, quit when file is empty
nrow=0;
while (! feof (fid) )
nrow=nrow + 1;
thisline=fscanf(fid,'%f',4);
T(nrow,1:4)=transpose(thisline);
endwhile
fclose (fid);
endfunction
## main program
myfiles = dir('*.lvm'); % To load every file of .lvm
for i = 1:length(myfiles) % Loop with the number of files
files=myfiles(i).name;
arrayT(i,:,:) = read_lvm(files);
columnmean(i,1:4)=mean(arrayT(i,:,:))
end
Теперь табличные значения, связанные с каждым файлом .lvm, находятся в массиве arrayT, а среднее значение для этого набора данных - в columnmean (i, 1: 4). Если i> 1, то columnmean будет массивом, в котором каждая строка будет содержать файлы для каждого файла lvm. T
Эта дискуссия становится слишком далекой от первоначального вопроса. Я рад продолжать помогать. Если вам нужна дополнительная помощь, закройте эту дискуссию, приняв мой ответ (щелкните на swish), а затем задайте новый вопрос с заголовком «Как читать файлы .lvm в Octave». Таким образом, вы получите представление от многих других людей.