function [dataAfterCSN,dilutionCSN] = CSN(dataForNorm,refSamp)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%constant sum normalization
%dataForNorm为待normalization的数据谱,其中行为样本,列为变量
%refSamp为参考谱,可以为中值谱,均值谱等
%dataAfterCSN为normalization后的数据谱
%dilutionCSN为各样本Xm与参考谱的浓度比构成的行矩阵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nargin<2
refSamp = median(dataForNorm); %得到参考谱
end
[normDataNum,normDataLength] = size(dataForNorm);
dataAfterCSN = zeros(normDataNum,normDataLength);%dataAfterCSN中用来存放处理后的样本
dilutionCSN = zeros(1,normDataNum);%dilutionCSN用来存放各样本与参考谱的浓度比
concentrationRefSamp = sum(refSamp,2);
concentrationData = sum(dataForNorm,2);
dilutionCSN = concentrationData./concentrationRefSamp;
dilutionCSN = repmat(dilutionCSN,1,normDataLength);
dataAfterCSN = dataForNorm./dilutionCSN;
dilutionCSN = dilutionCSN(:,1);
dilutionCSN = dilutionCSN';
评论0