采采流水

An Essay Concerning Human Understanding

数据处理备忘录

2017-11-17


数据操作[Updating]

Matlab 遍历文件夹读取数据

主要处理的是ASCII的dat文件,使用dlmread来读取。

一个小型Matlab脚本样例:

% data format [time rho11 rho22 .....]
% file address
address='E:\desk\alpha0.6_calculation\converge\';

% file name list
namelist=dir([address,'*.dat']);

% write in the data matrix
rowsize= 100000
colsize= 2
data=zeros(rowsize,colsize);

dim = length(namelist);
for i=1:dim
   filename=[address,namelist(i).name];
   temp=dlmread(filename,'',[0 1 rowsize-1 2]);
   data(:,i)=temp(:,1)-temp(:,2);
end


time_array=dlmread(filename,'',[0 0 rowsize-1 0]);
plot(time_array,data(:,1:dim))

Matlab批量拟合

之前一直使用Matlab的cftool 拟合工具箱来完成拟合工作,但是它只适用于单次拟合,不适和一次性进行批量拟合,

故此重新找一些可以进行批量拟合的方法。一个是尝试使用Python来完成, 这肯定是可以做的事情。另一个就是使用

matlab 的fit 函数,这个相对来说所需更少的精力, 就先从matlab开始吧。废话少说,上代码:

% multi-fitting
% prediction the converge data

hier=[6:9]';
cutoff_order = hier(end)+1;

dim_up=length(data);
pred_arr=zeros(dim_up,1);


for posi = 1:dim_up
    if(mod(posi,1000)==0)
	  posi/dim_up
    end
    temp = data(posi,:)';
    f=fit(hier,temp,'exp2','Robust', 'LAR');
    pred_arr(posi,1)= f(cutoff_order);
end