在Matlab中,我有一个向量是1x204的两倍。它代表一定时间段内的生物信号,并且在这段时间内信号会发生变化-有时会达到峰值并上升,有时会保持较小状态,接近基线值0。我需要对此数据进行倒数绘制(在x轴上)对另一组数据(在y轴上)进行统计分析。
问题在于,由于那些点接近0,例如,我拥有的最小点= -0.00497,1 / 0.00497会产生-201的值并变成“离群值”,而其余数据却非常不同并且值不那么大。因此,我尝试从数据集中删除接近0的非常小的值,以使其不影响1 /值。
我知道我可以使用cftool从图中删除那些点,但是如何获取去除了这些点的向量?有没有一种方法可以消除积分?通过cftool并删除了原点上的这些点,我能够生成代码并找出它们的确切点,但是我不知道如何创建去除这些点的向量。
有人可以帮忙吗?
我确实尝试使用以下for循环来获取它以除去值,其中“ total_BOLD_time_course”是我的信号,而“ 1 / total_BOLD_time_course”是我要绘制的图形,但是问题是在我的if语句中total_BOLD_time_course(i) = 1,这并不完全正确-因此,这样做点仍然存在于向量中,但现在取值为1。但是我只希望它们从向量中消失。
for i = 1:204
if total_BOLD_time_course(i) < 0 && total_BOLD_time_course(i) < -0.01
total_BOLD_time_course(i) = 1;
else if total_BOLD_time_course(i) > 0 && total_BOLD_time_course(i) < 0.01
total_BOLD_time_course(i) = 1 ;
end
end
end
要从数组中删除点,请使用以下语法
total_BOLD_time_course( abs(total_BOLD_time_course<0.01) ) = nan
这使得它们在图形上“空白”,并在进一步的计算中被忽略,但不会破坏数据点的时间顺序。
如果实际上不担心破坏时间点,则可以
total_BOLD_time_course( abs(total_BOLD_time_course<0.01) ) = []
然后,数据点将更少,并且它们将不会映射到time_course
您拥有的其他任何数据点。但是优点是它将“缩小”图形中的间隙。
-PS
请注意,在您的代码中,短语
x<0 && x<-0.01
是多余的,因为如果任何数字小于-0.01,则它自动小于0。我相信第一个应该是x>0
,然后您的代码就可以了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句