genre
2009-11-02, 14:48
我有一段处理15个指标数据5个等级的Matlab,目前的程序处理速度太慢,想加快一下处理速度。注明:每一个原始数据位110M左右,总共有75个数据。附上程序,大侠帮忙修改,不甚感激!急用!
clc
clear
samples = 6427
lines = 4379
%权重
Wi0=[0.0608,0.0898,0.0608,0.1516,0.0758,0.1516,0.0758,0.0449,0.1649,0.0319,0.0371,0.0167,0.0075,0.0179,0.0110];
path0='G:\data\data';
%输出结果 filout
filout='G:\data\Result';
fidout=fopen(filout,'wb');
%拷贝头文件
filout_hdr='G:\data\Result.hdr';
filhdr='G:\data\data_1_1.hdr';
copyfile(filhdr,filout_hdr);
for i_samp=1:samples
dt=ones(15,5,lines);
for i=1:15
for j=1:5
%fil0='G:\1_risk1\data_1_1'; fil0='G:\1_risk1\data_2_1'
fil0=strcat(path0,'_',num2str(i),'_',num2str(j));
fid=fopen(fil0,'rb');
for isamp0=1:i_samp
dt0=fread(fid,[1,lines],'float');
end
fclose(fid);
dt(i,j,:)=dt0;
clear dt0 fil0 fid
end
end
dt_wi=ones(lines,1);
for j_lin=1:lines
dt0=Wi0*dt(:,:,j_lin);
dt_wi(j_lin)=max(dt0);
end
fwrite(fidout,dt_wi,'float');
clear dt_wi dt
end
fclose all
clc
clear
samples = 6427
lines = 4379
%权重
Wi0=[0.0608,0.0898,0.0608,0.1516,0.0758,0.1516,0.0758,0.0449,0.1649,0.0319,0.0371,0.0167,0.0075,0.0179,0.0110];
path0='G:\data\data';
%输出结果 filout
filout='G:\data\Result';
fidout=fopen(filout,'wb');
%拷贝头文件
filout_hdr='G:\data\Result.hdr';
filhdr='G:\data\data_1_1.hdr';
copyfile(filhdr,filout_hdr);
for i_samp=1:samples
dt=ones(15,5,lines);
for i=1:15
for j=1:5
%fil0='G:\1_risk1\data_1_1'; fil0='G:\1_risk1\data_2_1'
fil0=strcat(path0,'_',num2str(i),'_',num2str(j));
fid=fopen(fil0,'rb');
for isamp0=1:i_samp
dt0=fread(fid,[1,lines],'float');
end
fclose(fid);
dt(i,j,:)=dt0;
clear dt0 fil0 fid
end
end
dt_wi=ones(lines,1);
for j_lin=1:lines
dt0=Wi0*dt(:,:,j_lin);
dt_wi(j_lin)=max(dt0);
end
fwrite(fidout,dt_wi,'float');
clear dt_wi dt
end
fclose all