从多个CSV文件中提取数据并进行计算,并将计算值编译为一个文件

时间:2014-07-17 04:03:19

标签: matlab csv

我编写了一个代码,用于从单个csv文件中提取数据并执行一组计算以输出1个结果。我想要做的是我希望能够通过一组20个csv原始数据文件运行该文件,执行计算以获得每个文件的结果,并将所有这些结果编译成单个矩阵。

例如,最后,我将有一个20 x 1矩阵,每行代表20 csv原始文件的每个csv文件的结果。

到目前为止,这是针对单个文件的matlab代码。

filename = 'some_file.csv'
delimiter = ',';
startRow = 19;
formatSpec = '%*s%*s%f%f%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'EmptyValue'      ,NaN,'HeaderLines' ,startRow-1, 'ReturnOnError', false);
fclose(fileID);

% extracted data into variable time and v

time = dataArray{:, 1};
v = dataArray{:, 2};

clearvars filename delimiter startRow formatSpec fileID dataArray ans;

% Start of calculation

I = v.*2000; % sensitivity 0.5mA/V
I_2 = I.^2;
current_parameter = trapz(time,I_2);

% Parameters, would like to set this up as input with 4 variable
h = 25; 
w = 5;  
t = 2;  
L_prime = 0.794193406;

%Results
Ibit(1) = 0.5*current_parameter*L_prime

end

我想要的是我想在循环中运行这些文件并作为函数调用,我可以为每组csv文件输入特定参数(4个变量)。结果是Ibit,其中1 Ibit对应于1个csv文件。我想为我拥有的文件集编译这个变量。

感谢您的帮助。

艾伦

1 个答案:

答案 0 :(得分:0)

试试这段代码:

list=dir('home/Desktop/csv_folder/*.csv'); % gives a structure with all .csv files info
ibit=zeros(size(list));
for i=1:length(list)
filename=list(i).name;
ibit(i)=csv_operation(filename,h(i),w(i),t(i),L_prime(i)); % where h,w,t,L_prime are vectors with input
                                               % parameters in order for the filelist

end