создание структуры внутри структуры из импортированных текстовых файлов в Matlab - PullRequest
0 голосов
/ 23 февраля 2012

Я не уверен, что кто-нибудь может помочь с этим вопросом, но здесь мы идем. У меня есть 4 папки, в которых каждая папка содержит данные для разных местоположений, в папках у меня есть 8 TXT-файлов, которые представляют измеренные переменные в каждом местоположении (то есть одинаковые переменные, измеренные в каждом местоположении). Я пытаюсь импортировать их в 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, что не кажется необходимым. Я понимаю, что это из-за того, как я написал последнюю строчку сценария, но я не могу изменить ее без ошибки. Будем весьма благодарны за любые советы, которые вы можете дать по проблеме или по сценарию в целом.

1 Ответ

1 голос
/ 23 февраля 2012

Я думаю, что cell2mat - это функция, которую вы хотите для этой цели. Вот мое использование, посмотрите, подходит ли оно вам:

tt = {ones(1,100)};
tt
tt = 

    [1x100 double]
cell2mat(tt)
    ans =

      Columns 1 through 15

         1     1     1     1     1     1     1     1     1     1     1     1...
...