Baca file xls dari folder berbeda dan tulis di MATLAB

Saya memiliki folder dengan hierarki ini:

Data meteo 
    Avril
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls
    May
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls
    June
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls

Saya perlu membaca semua file di folder tersebut dan memilih beberapa kolom saja untuk dikerjakan dan menuliskannya di direktori lain dengan hierarki yang sama.

Saya baru di Matlab dan saya mencoba menguji dengan kode ini.

D = 'data meteo';
DESTINATION = "data meteo destination"
S = dir(fullfile(D,'*'));
N = setdiff({S([S.isdir]).name},{'.','..'}); % number of subfolders of D.

for ii = 1:numel(N)
    T = dir(fullfile(D,N{ii},'*')); 
    C = {T([T.isdir]).name}; %
    for jj = 1:numel(C)
        myExcelFile = fullfile(D,N{ii},C{jj});

        %data = xlsread(myExcelFile);

        data1=xlsread(myExcelFile,'A:A');
    data2=xlsread(myExcelFile,'B:B');
    data3=xlsread(myExcelFile,'C:C');
    data4=xlsread(myExcelFile,'E:E');

    data=[data1 data2 data3 data4]

    %print(data)
    xlswrite(DESTINATION,fullfile(D,N{ii},C{jj}));

    end
end

Saya perlu mendapatkan hasil sebagai folder hierarki yang sama:

Data meteo Destination 
    Avril
         Day1
             file.xls 
         Day2
             file.xls
         Day3
             file.xls
    May
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls
    June
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls

person Dr. Mza    schedule 25.08.2019    source sumber
comment
apa kesalahan yang Anda dapatkan?   -  person Yuval Harpaz    schedule 25.08.2019


Jawaban (1)


Saya telah mengedit/memperluas kode Anda, dan tampaknya mencapai apa yang saya pikir Anda cari ketika saya mencobanya di direktori palsu yang saya buat untuk itu, tetapi lihat apakah itu berhasil untuk Anda (tapi saya sarankan mengujinya di SALINAN data Anda - jika ada sesuatu yang tidak berfungsi dan mengubah/menimpa file asli).

Perubahan utama yang saya buat adalah:

  • untuk menambahkan fungsi setdiff yang Anda gunakan untuk N= juga untuk C=, untuk mengabaikan '.' dan direktori '..'.

  • untuk mengubah kode myExcelFile untuk mendapatkan file itu sendiri, bukan direktori 'Day1'

  • untuk menambahkan kode yang membuat direktori yang cocok dalam direktori DESTINATION Anda, untuk menyimpan file baru.

D = 'data meteo';
DESTINATION = 'data meteo destination';
S = dir(fullfile(D,'*'));
N = setdiff({S([S.isdir]).name},{'.','..'}); % number of subfolders of D.

if ~isdir(DESTINATION)
    mkdir(DESTINATION)
end

for ii = 1:numel(N)
    T = dir(fullfile(D,N{ii},'*'));
    C = setdiff({T([T.isdir]).name},{'.','..'}); %

    if ~isdir(fullfile(DESTINATION,N{ii}))
        mkdir(fullfile(DESTINATION,N{ii}))
    end

    for jj = 1:numel(C)

        if ~isdir(fullfile(DESTINATION,N{ii},C{jj}))
            mkdir(fullfile(DESTINATION,N{ii},C{jj}))
        end

        fileList = dir(fullfile(D,N{ii},C{jj},'*.xls*'));
        myExcelFile = fullfile(D,N{ii},C{jj},fileList.name);

        data1=xlsread(myExcelFile,'A:A');
        data2=xlsread(myExcelFile,'B:B');
        data3=xlsread(myExcelFile,'C:C');
        data4=xlsread(myExcelFile,'E:E');

        data=[data1 data2 data3 data4];

        xlswrite(fullfile(DESTINATION,N{ii},C{jj},fileList.name),data);
    end
end
person Craig Arnold    schedule 25.08.2019