资源简介

SVC PSR 光谱数据的读入,光谱平滑,光谱重采样,文件批处理;

资源截图

代码片段和文件信息

%%程序说明
%%本程序对PSR获得数据进行处理,读入顺序按照文件名正序排序,求取某样本n条光谱的平均光谱,每个样本保存为一个文件
%读入sig文件,输出txt或xls文件,前n列为样本反射率光谱,第n+1列为平均反射率光谱
%注意:程序默认按照文件命名顺序每n条取平均,因此需要将不需要或无效的数据删除!!
% 问题反馈: t_shuai@hotmail.com
clcclear

%以下为需要设置参数
fpath=‘E:\岩心matlab计算样本\‘;%文件路径
sname=‘mineral‘; %编号前缀,如vegsoil.rockwater
fouttype=‘.xls‘;    %设置输出文件类型,xls或txt
n=2; %样本光谱测量n条,n条取平均
num=1;   %输出文件从1开始编号,可自行设置

%批处理
file=dir([fpath‘*.sed‘]);
data=zeros(1024n+1);   %存放输出数组,前n列为样本光谱,第n+1列为平均光谱,PSR默认波段数为1024

for i=1:length(file)
    %依次打开文件
    rfid=fopen([fpathfile(i).name]);
    count=0;d=[];
    
    %读PSR数据到d
    while 1
        tline = fgetl(rfid);
        count=count+1;
        if ~ischar(tline) break end
        if count>=27   %PSR从27行开始写入光谱数据
            t=str2num(tline);  
            d=vertcat(dt);
        end
    end
    
    %读光谱数据到data,读完一个样本时输出文件
    if mod(in) ==0 %当读完一个样本n个文件的时候,每n条光谱求平均,并输出
        data(:1)=d(:1);%将光谱波长数值
        data(:n+1)=d(:6);% the 6th column is reflectance
        data(:n+2)=(sum(data(:2:n+1)‘)/n/100)‘;
        fileout=[fpathsnamenum2str(num)fouttype]   
        fidout=fopen(fileout‘wt‘);
        dlmwrite(fileout data ‘delimiter‘ ‘\t‘ ‘precision‘ 6 ‘newline‘ ‘pc‘)
        %fprintf(fidout‘%f\n‘data);%输出格式不对
        num=num+1;
        fclose(fidout);
    else
        %未读完一个样本,将d中的光谱数据读入data
        data(:mod(in)+1)=d(:6);% the 6th column is reflectance
    end
end 


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1775  2014-03-25 09:34  PSR测量数据平均批处理_matlab_2013_10_14.m

     文件       2020  2014-03-25 11:14  重采样_PSR.m

----------- ---------  ---------- -----  ----

                 3795                    2


评论

共有 条评论