資源簡介
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
- 上一篇:慣導姿態解算
- 下一篇:LTE下行鏈路級仿真程序
評論
共有 條評論