Я не уверен, может ли кто-нибудь помочь в этом вопросе, но здесь мы идем. У меня есть 4 папки, в которых каждая папка содержит данные для разных местоположений, в папках у меня есть 8 файлов .txt, которые представляют измеренные переменные в каждом месте (т. Е. Одинаковые переменные, измеренные в каждом месте). Я пытаюсь импортировать их в matlab и перечислять измеренные переменные в структуре, чтобы их можно было сравнивать и строить друг с другом после этого (без этого они будут писать друг друга).Создание структуры внутри структуры из импортированных текстовых файлов в matlab
Я написал скрипт для импорта их в MATLAB, скрипт работает, но не совсем так, как я хочу его, сценарий выглядит следующим образом:
clear all
pathName = 'E:\University\CEH Lancaster\Project\LA practice\final files';
FolderListing = dir(pathName);
FolderListing = FolderListing(3:end);
%lists the folder in the directory specified by pathName
for i = 1:length(FolderListing);
LName{i} = (FolderListing(i).name);
%obtains the name of each folder
end
for i = 1:length(LName)
TopFolder{i} = fullfile(pathName,LName{i});
%path for each individual folder
dirListing{i} = dir(fullfile(TopFolder{i},'*.txt'));
%list of the .txt files
for ii = 1:length(dirListing{1,1});
fileToRead1{1,i}{ii,1} = (dirListing{1,i}(ii,1).name);
%name of the .txt files in the TopFolder
end
end
for i = 1:length(fileToRead1);
for ii = 1:length(fileToRead1{1});
fid{1,i}{ii,1} = fopen((fullfile(TopFolder{1,i},fileToRead1{1,i}{ii,1})));
%open the files specified by fileToRead prior to importing the data
%into matlab
data{1,i}{ii,1} = textscan(fid{1,i}{ii,1},'%f');
%import the data into matlab
[~,name{1,i}{ii,1}] = fileparts(fileToRead1{1,i}{ii,1});
%obtain the name of each of the variables
Location.(LName{i}).(genvarname(name{1,i}{ii,1})) = data{1,i}{ii,1};
%create a strucutre for the individual locations and the
%variables.
end
end
Проблема заключается в конечном результате где вместо имени Location.Name, а затем списка переменных, у меня есть Location.Name.variables, что не кажется необходимым. Я понимаю, что это связано с тем, как я написал последнюю строку скрипта, но я не могу изменить его, не создавая ошибку. Любые советы, которые вы могли бы дать по проблеме или сценарию в целом, получили бы большую оценку.
Я не совсем уверен, что понимаю, какой формат вы предпочитаете. Это то, что у вас есть «Location.Alaska.temp = 1; Location.Alaska.lat = 5; Location.Alaska.lon = 3;' и вы предпочли бы иметь «Location.Alaska = [1 3 5]»? –
на данный момент я говорю Location.Alaska.temp {1,1}, где вместо этого я бы предпочел, чтобы temp не был ячейкой 1x1, а только значениями. Например, в настоящее время, если я пишу Location.Alaska.temp в командном окне, matlab возвращает [365x1 double], вместо этого я бы хотел, чтобы он возвращал вектор. – Emma