Создание нескольких экземпляров класса (одного класса) путем импорта данных из нескольких текстовых файлов - PullRequest
1 голос
/ 16 сентября 2011

Надеюсь, меня извинят, если на это где-нибудь ответили. Я не знаю всех терминов программирования, и мои поиски не дали мне ничего, что я мог бы использовать.

Моя проблема: У меня есть несколько текстовых файлов, содержащих данные, которые я хочу использовать. Имена как:

spectrum_day "номер" .txt

Я хочу сделать что-то вроде:

день "число" = имя класса (spectrum_day "число" .txt)

без необходимости делать это вручную для каждого файла. Я попробовал это в надежде, что это сработает.

f = dir('spectrum_day*.txt');
for i = 1:numel(f)
    f(i).name(1,10:length(f(i).name)-4 = day(f(i).name));
end

Кроме того, мне было интересно, смогу ли я получить доступ к свойствам экземпляра, имея массив всех имен экземпляров и используя что-то вроде: "А (1) .wavelength"? Или, если есть другой способ получить свойства из нескольких экземпляров одного и того же класса в цикле или еще что-нибудь, не стесняйтесь меня заполнить.

Спасибо

1 Ответ

3 голосов
/ 16 сентября 2011

Ваш вопрос не очень понятен, но, возможно, следующее может привести вас на правильный путь

Сначала, чтобы извлечь номер дня из имени файла, вы можете использовать функцию regexp .Эта функция использует регулярное выражение для поиска во входной строке (в вашем случае в имени файла) определенных шаблонов.для поиска номера вы можете использовать '\ d +' . \ d говорит, что ищут цифры (0-9), а + говорит, что ищет одну или несколько последовательностей.Соединяя это вместе, вы можете иметь в своем for-loop следующее:

dayNumberString = regexp(f(i).name,'\d+','match'); %# Extract the digits of the day number into
                                                   %# a character array
dayNumber = str2num(dayNumberString);  %# Convert the character array to numeric data.

Далее вам нужен способ загрузки данных из каждого файла (я предполагаю, что функция day из фрагмента кода в вопросе делает это и возвращает данные в виде переменной или класса matlab).Тогда вы могли бы просто иметь

storedData(dayNumber).name = f(i).name; %#saves the file name.
storedData(dayNumber).data = day(f(i).name) %# read the file and save the result

После того, как ваши данные загружены, вы можете получить доступ к данным в структуре storeData через индекс.Например, чтобы получить доступ к данным за 10-й день, вы должны набрать storeData (10) .data .

HTH ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...