Matlab工具箱N-way的使用

介绍

MATLAB的N-way工具箱提供了一组函数和算法,利用一些多线性模型来对多维数据集进行建模。

开发环境:MATLAB 5.x

支持的约束:非负、单峰

工具箱下载:https://ucphchemometrics.com/wp-content/uploads/2023/09/Nway-Version-3.5.zip

在线教程:https://ucphchemometrics.com/n-way-course/

本文余下部分为教程笔记。教程数据集下载:https://ucphchemometrics.com/wp-content/uploads/2023/03/NWAYCOurse.zip

在MATLAB中处理多维数据

数据:claus.mat。它包含了5个样本的荧光EEM数据。样本包含的化合物:色氨酸、苯丙氨酸、酪氨酸。

打开Matlab R2021a,使用导入数据功能,选择claus.mat。导入结果如下。

名称
DimX [5,201,61]
X 5x12231 double

数据重整:X = reshape(X, DimX)

绘制所有样本的发射光谱(Emission spectra):plot(X(:,:,c)'),其中c为激发波长。

绘制所有样本的激发光谱(Emission spectra):plot(squeeze(X(:,1,:))'),其中c为发射波长。(size(X(:,1,:))=[a,1,b],需要使用squeeze函数将其尺寸压缩为[a,b])

绘制第i个样本的立体三维图:mesh(reshape(X(i,:),DimX(2),DimX(3)))。(reshape结果可加撇)

基础PARAFAC建模

CANDECOMP-PARAFAC模型于1970年提出,在化学计量学中通常被称为PARAFAC。其固有的独特性使其成为化学计量学中解析纯底层光谱组分的常用模型。

拟合PARAFAC模型:[Factors] = parafac(X,3);

可视化Factors: plotfac(Factors)

将Factors分配到分数与负载(就是三元组的值依次赋值给三个变量):[A,B,C] = fac2let(Factors)

A的值为样本维负载,B的值为em维负载,C的值为ex维负载。可视化:plot(B);plot(C);。分数与浓度成正比,如果需要确定具体的浓度值,则需要已知浓度的样本作为参考,然后按比例计算出其他样本的浓度。这个过程称为二阶校准(https://ucphchemometrics.com/help-on-parafac-concentrations/)。

确定组分数:使用分半分析、核一致性等。如果模型有效,则核一致性接近100%。如果核一致性接近50%,则模型不稳定,施加适当的约束可能会提高稳定性。在实践中,核一致性随着组分数增加而缓慢下降,在组分数超过正确值时急剧下降。

算法的收敛性:PARAFAC模型的拟合算法是交替最小二乘法。该算法是迭代的,当两个连续迭代之间的相对拟合差低于某个阈值时停止。阈值的默认值为10^-6。对于某些数据,模型很难拟合,因此可能需要设置较大的阈值。

高级PARAFAC建模

重叠的荧光数据可以分解为分数和负载向量,这些向量代表激发光谱、发射光谱、化学分析物浓度的估计值。

施加约束的帮助在PARAFAC.m文件中。

可以利用已建立的模型确定新样本的分数。

预处理

居中的目的:删除数据中的常量项

你可能感兴趣的:(三维荧光,matlab)