2

我有每 3 秒采集一次的数据。最初,它们总是在较窄的基线范围内(即 100±10)开始,但在约 30 秒后,它们的值开始增加。

这是一个例子。

在此处输入图像描述

问题是对于每个实验,由于设备校准的变化,初始基线值可能从 y 轴的不同点(即 100、250、35)开始。

尽管在 30 秒左右的相对信号增强在不同实验中表现相同,但沿 y 轴可能存在偏移。

我的目的是测量这些曲线的 AUC。由于实验之间的偏移,它们不具有可比性,尽管它们在形状和增强率上可能相同。

因此,我需要对数据进行标准化,以便无论偏移量如何,它们都具有可比较的基线初始值。这可以设置为 0。

你能给我一些关于如何在 Matlab 上完成标准化的建议吗?

理想情况下,输出数据应该是相对信号增强的(相对于基线的百分比)。

例如,上面的基线值将徘徊在 0±10 左右(而不是原始原始值 ~139),并且随着增强,它们将增加到 ~65%(而不是原始原始值 ~230)。

样本数据:

 index       SQMean   
_____    ____________

'0'      '139.428574'
'1'      '133.298706'
'2'      '135.961044'
'3'      '143.688309'
'4'      '133.298706'
'5'      '133.181824'
'6'      '134.896103'
'7'      '146.415588'
'8'      '142.324677'
'9'      '128.168839'
'10'     '146.116882'
'11'     '146.766235'
'12'     '134.675323'
'13'     '138.610382'
'14'     '140.558441'
'15'     '128.662338'
'16'     '138.480515'
'17'     '153.610382'
'18'     '156.207794'
'19'     '183.428574'
'20'     '220.324677'
'21'     '224.324677'
'22'     '230.415588'
'23'     '226.766235'
'24'     '223.935059'
'25'     '229.922073'
'26'     '234.389618'
'27'     '235.493500'
'28'     '225.727280'
'29'     '241.623383'
'30'     '225.805191'
'31'     '240.896103'
'32'     '224.090912'
'33'     '230.467529'
'34'     '248.285721'
'35'     '233.779221'
'36'     '225.532471'
'37'     '247.337662'
'38'     '233.000000'
'39'     '241.740265'
'40'     '235.688309'
'41'     '238.662338'
'42'     '236.636368'
'43'     '236.025970'
'44'     '234.818176'
'45'     '240.974030'
'46'     '251.350647'
'47'     '241.857147'
'48'     '242.623383'
'49'     '245.714279'
'50'     '250.701294'
'51'     '229.415588'
'52'     '236.909088'
'53'     '243.779221'
'54'     '244.532471'
'55'     '241.493500'
'56'     '245.480515'
'57'     '244.324677'
'58'     '244.025970'
'59'     '231.987015'
'60'     '238.740265'
'61'     '239.532471'
'62'     '232.363632'
'63'     '242.454544'
'64'     '243.831161'
'65'     '229.688309'
'66'     '239.493500'
'67'     '247.324677'
'68'     '245.324677'
'69'     '244.662338'
'70'     '238.610382'
'71'     '243.324677'
'72'     '234.584412'
'73'     '235.181824'
'74'     '228.974030'
'75'     '228.246750'
'76'     '230.519485'
'77'     '231.441559'
'78'     '236.324677'
'79'     '229.935059'
'80'     '238.701294'
'81'     '236.441559'
'82'     '244.350647'
'83'     '233.714279'
'84'     '243.753250'
4

2 回答 2

2

接近Shai提到的内容:

blwindow = 1:nrSamp;
DataNorm = 100*(Data/mean(Data(blwindow))-1)

将窗口设置为正确的大小,但是您要确定它,这取决于您的数据。输出 DataNorm 以 % 为单位。

于 2015-03-22T14:59:36.943 回答
1

通常这类问题需要对您正在测量的数据(范围、噪声级别、如果您知道实际数据何时开始等)以及您试图达到的结果有一些更具体的知识。但是,仅基于您的问题并通过查看您的示例图,我会做这样的事情(假设您的数据在两个数组中,time并且data):

initialTimeMax = 25; % take first 25 s
baseSample = data(time <= initialTimeMax); % take part of the data corresponding to the first 25 s
baseSampleAverage = mean(baseSample); % take average to deal with noise
data = data - baseSampleAverage;

如果你不知道你的数据什么时候开始,你可以应用一个平滑滤波器,然后求导,找到它的最大值的 x 位置,并设置initialTimeMax到这个 x 位置。

于 2015-03-22T15:00:29.193 回答