在Matlab中读取多个Excel文件,平均并写入单个Excel文件

时间:2016-10-31 14:22:38

标签: excel matlab

我正在尝试扩展我编写的一些代码。在下面包含该脚本可能很有用:

% importing single excel sheet

data = xlsread('test_file.xlsx');

% averaging durations (exluding NaNs)

average_rx_time = mean(reaction_time, 'omitnan');
average_reach_dur = mean(reach_dur, 'omitnan');
average_lift_dur = mean(lift_dur, 'omitnan');
average_hold_dur = mean(hold_dur, 'omitnan');
average_withdrawal_dur = mean(withdrawal_dur, 'omitnan');

% Excel file output containing daily averages

a = [average_rx_time, average_reach_dur, average_lift_dur, average_hold_dur, average_withdrawal_dur];
data_cells = num2cell(a);
column_headers ={'Rx Time', 'Reach Dur', 'Lift Dur', 'Hold Dur', 'Withdrawal Dur'};
row_headers(1,1) ={'Day 1'};
output = [{' '} column_headers; row_headers data_cells];
xlswrite('Test.xls', output);

此部分有效。它在单个Excel工作表中读取一堆值,平均一些数字,然后将这些平均值打印到另一个Excel工作表。我现在需要做的是从目录中读取几个文件(它们都存在于一个文件夹中并且是相同的文件类型),在每个文件中平均相同的值,然后在电子表格中使用它们各自的文件名打印它们。

我想我应该使用一个循环,但我不知道在哪里实现它。我也不确定在打印到同一个文件时如何读取多个Excel文件。有什么想法吗?

谢谢, 米奇

1 个答案:

答案 0 :(得分:0)

使用cddir函数获取指定文件夹中的文件列表:

cd('\path\to\folder');    % set MATLAB's current folder
fileList = dir('*.xlsx'); % get list of .xlsx files in a struct array

for fileNum = 1:length(fileList)
    fileName = fileList(fileNum).name;

    % do whatever you want with fileName here

end