当输出的维度在matlab中作为迭代器的函数变化时,保存for循环的输出

时间:2014-11-06 21:02:20

标签: matlab data-structures curve-fitting

我试图将一些紫外/可见吸收光谱拟合到公布的参考标准。通常,从光谱仪获得的吸光度等于每个吸收剂浓度的线性组合乘以每个波长的每个分子的吸收截面(并乘以光谱仪的光程)。

尽管如此,并非所有光谱仪在x轴(波长)上都是精确的,因此可能需要进行一些调整以使一个人的实验数据符合参考标准。

在这个脚本中,我正在调整我的波长和光谱强度的指数,以查看我的光谱的整数步长是否更符合参考标准(每个步长为0.08 nm)。当然,我需要保存fit参数的输出;但是,由于每个拟合都有一组不同的维度,我很难将它们扔进一个结构(k)(在下面的代码片段中注释掉)。

如果有人有提示或暗示,我会非常感激。我的示例代码的相关部分如下:

for i = -15:15
    lengthy = length(wavelengthy)
    if i >= 0
        xvalue = (1:lengthy - abs(i))
        yvalue = (1+abs(i):lengthy)
    else
        xvalue = (1+abs(i):lengthy)
        yvalue = (1: lengthy - abs(i))
    end
    Phi = @(k,wavelengthy)  ( O3standard(yvalue) .* k(1) + Cl2standard(yvalue) .* k(2) + ClOstandard(yvalue) .* k(3) + OClOstandard(yvalue) .* k(4));
    [khat, resnorm, residual, exitflag, output, lambda, jacobian] = lsqcurvefit(Phi,k0,wavelengthy(xvalue),workingspectra(yvalue), lowerbound, upperbound, options);


    %parameters.khat(k,:) = khat;
    %parameters.jacobian(k,:) = jacobian;
    %parameters.exitflag(k,:) = exitflag;
    %parameters.output(k,:) = output;
    %parameters.residuals(k,:) = residual

    %concentrations(:,k) = khat./pathlength
    k=k+1
end

0 个答案:

没有答案