Matlab导入并组合多个dat文件

时间:2017-12-26 07:44:02

标签: matlab loops import

我正在尝试导入多个.dat文件,处理它们并合并为一个矩阵。在这种情况下,我需要将每个单元格除以其时间(即归一化因子)。 这个例子适用于2个dat文件,我设法做到了,但我有很多文件,直到data100raw,我希望有一个循环来一次处理所有内容,同时允许我设置不同的规范化因子每个文件。

data1raw = importdata('2015-04-19004-190-31.04-20140819-5sample transport-PL spectra 10s-0mm.dat')
data2raw = importdata('2015-04-19004-190-31.04-20140819-5sample transport-PL spectra 10s-2mm.dat')

%remove first column
data1raw(:,1) = []
data2raw(:,1) = []

%Enter time (i.e. normalising factor)
data1time = [5; data1raw]
data2time = [10; data2raw]

%combine
datacombine = [data1time, data2time]

%normalise
width = 2
height = 1341
for ihori = 1:width
    for iverti = 2:height
        datacombine(iverti,ihori) = datacombine(iverti,ihori) / datacombine(1,ihori)
    end
end

原始数据的屏幕截图 Original Data

和最终所需产品(第一行是标准化因子) final desired product (first row is the normalising factor)

1 个答案:

答案 0 :(得分:0)

我做了两个假设:

1。所有文件都按顺序编号,跳过次数为2.

2。数据集的列数相同,我从您的代码中了解的数量为1341.

您需要将所有规范化因子分配给变量,'规范'在这种情况下。

代码如下:

data=(1:1341)';
norm=[n1 n2 n3 ...]; % Your normalization values

for r=0:2:200
    mname=sprintf('2015-04-19004-190-31.04-20140819-5sample transport-PL spectra 10s-%dmm.dat',r);
    mdata=importdata(mname);
    data=[a mdata(:,2)];
end
data(:,1)=[];
data=data./norm;

希望这有帮助。