Пойдемт по частям
Сначала я не рекомендую объединить все ваши данные файлы в одном столбце, нет необходимости иметь эту информацию вместе вы можете работать отдельно с это, используя, например датастор
, работающий в среде MATLAB в каталоге: млн лет
>> pwd
ans =
/home/anquegi/learn/matlab/stackoverflow
I HAV е папку с папкой, которые имеют два образца Excel файлов:
>> ls
20_hz.jpg big_data_store_analysis.m excel_files octave-workspace sample-file.log
40_hz.jpg chirp_signals.m NewCode.m sample.csv
>> ls excel_files/
A_01Jan2016.xlsx A_02Jan2016.xlsx
содержание каждого файла:
Date Quantity Latitude Longitude Measurement
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6
7 7 7 7 7
8 8 8 8 8
9 9 9 9 9
10 10 10 10 10
11 11 11 11 11
12 12 12 12 12
13 13 13 13 13
14 14 14 14 14
15 15 15 15 15
16 16 16 16 16
17 17 17 17 17
18 18 18 18 18
19 19 19 19 19
20 20 20 20 20
21 21 21 21 21
22 22 22 22 22
Только кто, как он будет работать.
Считывание данных:
>> ssds = spreadsheetDatastore('./excel_files')
ssds =
SpreadsheetDatastore with properties:
Files: {
'/home/anquegi/learn/matlab/stackoverflow/excel_files/A_01Jan2016.xlsx';
'/home/anquegi/learn/matlab/stackoverflow/excel_files/A_02Jan2016.xlsx'
}
Sheets: ''
Range: ''
Sheet Format Properties:
NumHeaderLines: 0
ReadVariableNames: true
VariableNames: {'Date', 'Quantity', 'Latitude' ... and 2 more}
VariableTypes: {'double', 'double', 'double' ... and 2 more}
Properties that control the table returned by preview, read, readall:
SelectedVariableNames: {'Date', 'Quantity', 'Latitude' ... and 2 more}
SelectedVariableTypes: {'double', 'double', 'double' ... and 2 more}
ReadSize: 'file'
Теперь у вас есть все ваши данные в таблицах, давайте предварительного просмотра
>> data = preview(ssds)
data =
Date Quantity Latitude Longitude Measurement
____ ________ ________ _________ ___________
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6
7 7 7 7 7
8 8 8 8 8
предварительный просмотр хороший момент, чтобы получить образец данных для работы.
Вам не нужно сливаться вы можете работать Повсеместно все элементы:
>> ssds.VariableNames
ans =
'Date' 'Quantity' 'Latitude' 'Longitude' 'Measurement'
>> ssds.VariableTypes
ans =
'double' 'double' 'double' 'double' 'double'
% let's get all the Latitude elements that have Date equal 1, in this case the tow files are the same, so we wil get two elements with value 1
>> reset(ssds)
accum = [];
while hasdata(ssds)
T = read(ssds);
accum(end +1) = T(T.Date == 1,:).Latitude;
end
>> accum
accum =
1 1
Таким образом, вы должны работать с хранилищем данных и таблиц, это немного сложно, но очень полезно, вы также хотели бы контролировать readsize и другие переменные в объектах хранилища данных.но это хороший способ работы с большими файлами данных в MATLAB
Для более старых версий MATLAB вы можете использовать более традиционные аппроксимации:
folder='./excel_files';
filetype='*.xlsx';
f=fullfile(folder,filetype);
d=dir(f);
for k=1:numel(d);
data{k}=xlsread(fullfile(folder,d(k).name));
end
Теперь у вас есть данные, хранящиеся в данных
folder='./excel_files';
filetype='*.xlsx';
f=fullfile(folder,filetype);
d=dir(f);
for k=1:numel(d);
data{k}=xlsread(fullfile(folder,d(k).name));
end
data
данные =
[22x5 double] [22x5 double]
данных {1}
ANS =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6
7 7 7 7 7
8 8 8 8 8
9 9 9 9 9
10 10 10 10 10
11 11 11 11 11
12 12 12 12 12
13 13 13 13 13
14 14 14 14 14
15 15 15 15 15
16 16 16 16 16
17 17 17 17 17
18 18 18 18 18
19 19 19 19 19
20 20 20 20 20
21 21 21 21 21
22 22 22 22 22
Но будьте осторожны с большим количеством больших файлов
Если размер массива в пределах Excel, тогда вы не будете иметь возможность размещать все данные в одном файле xlsx независимо от MATLAB. Вы можете, конечно, сохранить данные в MATLAB. Что вы подразумеваете под «слиянием данных каждого столбца»? Суммировать их? объединить их? – buzjwa
Попробуйте прочитать файлы с помощью 'xlsread'. Вы можете использовать функцию 'dir' для получения всех имен файлов так:' files = dir ('myfolder/A _ *. Xlsx'); '. После того, как у вас есть код, вы можете публиковать любые конкретные проблемы, которые у вас есть с ним. – buzjwa