2016-07-11 2 views
0

У меня есть как основной код, так и функция, которая импортирует данные из .dat-файла, и я бы хотел импортировать много случаев, и поэтому я создал несколько каталогов для структурирования файлов.Matlab fopen path to variable

Вот соответствующая часть функции я использую:

function [time_,cm,cd_,cl,clf1,clr] = importcd2(filename, startRow, endRow) 

formatSpec = '%7s%33s%24s%24s%24s%s%[^\n\r]'; 

%% Open the text file. 
fileID = fopen(filename,'r'); 

textscan(fileID, '%[^\n\r]', startRow(1)-1, 'ReturnOnError', false); 

А потом, когда я хочу, чтобы вызвать функцию из основного кода, я использую:

[a,~,b,~,~,~] = importvar('/folder1/folder2/folder3/folder4/folder5/file1.dat', 1, inf); 

В которые a и b являются переменными, которые я хочу экспортировать из .dat-файла. То, что я хотел бы сделать, это изменить функцию, чтобы fopen мог открыть весь путь, а не только идентификатор файла (file1.dat), потому что я предпочитаю иметь несколько каталогов, а не 30 файлов .dat или больше в тот же каталог. Является ли это возможным? Мой вопрос отличается от How can I load 100 files with similar names and/or string in just one step in MATLAB?

Заранее благодарен!

+0

Возможный дубликат [Как я могу загрузить 100 файлов с одинаковыми именами и/или строка всего за один шаг в MATLAB?] (http://stackoverflow.com/questions/15366374/how-can-i-load-100-files-with-similar-names-and-or-string-in- just-one-step-in-ma) – GameOfThrows

+0

Что такое 'formatSpec' для? –

+0

@ MatthiasW. Это автоматически определяется MATLAB для извлечения значений в соответствии с форматом файла .dat. –

ответ

0

Вы можете использовать команду dir, чтобы получить все .dat файл в папку, а затем использовать for цикл, чтобы идти по всем из них

function [time_,cm,cd_,cl,clf1,clr] = importcd2(dirname, startRow, endRow) 
DatFiles = dir([dirname filesep '*.dat']); 

for k=1:numel(DatFiles) 
    fileID = fopen(DatFiles(k).Name,'r'); 
    ... 
end 

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

  • Нет связанных вопросов^_^