目的:把多个txt文件里光谱反射值直接导入matlab(而不是一个一个的用之前点按钮的方式)
比如有40多个txt文件,1roi1.txt,1roi2.txt,,,,,,,2roi1.txt,2roi2,txt,,,,,,,,,,10roi1.txt,10roi2,txt,,,,,,,,
每个txt文件里的数据是这样的
ENVI ASCII Plot File [Tue Dec 16 13:53:23 2014]
Column 1: Wavelength
Column 2: Mean: Region #1 [Red] 320 points~~1
399.027527 0.000000
399.701202 0.000000
400.375061 0.000000
401.049103 0.000000
401.723297 0.000000
402.397675 0.000000
,,,,,,,,,,,,,,,,,,, ,,,,,,,,,
有三排说明的内容,下面第一列是波长,第二列是光谱反射值,一开始我是把三排说明内容删掉了,这样就是光光的数据,比较整齐。导入代码如下:
clear;
data=[];
file=dir('*.txt');%读出当前文件夹里有n个txt文件
%file是n*1struct,每一个struct数据又是一个1*1的struct,其中的name包含了txt文件名
for i=1:length(file)
tmp=importdata(file(i).name);%tmp就是临时矩阵数据(txt数据)
data(:,i)=tmp(:,2);%第一列是波长,导入第二列光谱值,
end
后来嫌每次删太麻烦,就把稍稍改动一下代码,就可以直接对原始txt文件导入光谱值,代码如下
clear;
data=[];
file=dir('*.txt');%读出当前文件夹里有n个txt文件
for i=1:length(file)
t=importdata(file(i).name);%t是一个struct 内含data(double型,矩阵数据) 和 textdata(cell型,前三排说明) ,取出data即可
tmp=t.data;
data(:,i)=tmp(:,2);%第一列是波长,第二列是光谱值,
end