Как я могу загрузить 100 файлов с похожими именами и / или строкой всего за один шаг в MATLAB?

У меня есть 100 файлов ASCII в моем каталоге, все имена которых указаны ниже:

int_001.ASC
int_002.ASC
int_003.ASC
,
,
,
int_099.ASC
int_100.ASC

Я должен импортировать их в MATLAB с importdata, который должен работать следующим образом:

A = importdata('int_001.ASC', ' ', 9) x = A.data(:,1) y = A.data(:,2) 

Мой вопрос: как я могу избежать написания 100-кратного importdata ? Есть ли способ записать только первую строку, а затем загрузить все данные?

благодаря

 fls = dir( 'int_*.ASC' ); for fi=1:numel(fls) A{fi} = importdata( fls(fi).name, ' ', 9 ); % ... end 

ОБНОВИТЬ:
Вы можете использовать форматирование строк для чтения файлов в соответствии с их номерами:

 for fi=1:100 A{fi} = importdata( sprintf('int_%03d.ASC', fi ), ' ', 9 ); % ... end 

Вы можете использовать функцию strcat в цикле for:

 for k=1:n fileName = strcat('int_',num2str(k, '%03d'),'.ASC'); A(k) = importdata(fileName, ' ', 9); x(k) = A(k).data(:,1); y(k) = A(k).data(:,2); end 

Если вы хотите сделать это немного за бортом:

 alldata = arrayfun(... @(dirEntry)importdata(dirEntry.name, ' ', 9), ... dir('int_*.ASC'),... 'uniformoutput',false); 

Эта строка делает следующее

  1. Получает список всех файлов, соответствующих частичному имени файла, в виде массива структур (h / t Shai)
  2. Для каждого элемента в этом массиве выполняется вызов importdata из вашего исходного сообщения.
  3. Компилирует все выходы в массив ячеек.
Давайте будем гением компьютера.