在MATLAB中建模hrf时间序列

时间:2017-10-18 02:42:01

标签: matlab convolution neuroscience

我试图对fMRI数据进行建模,以便检查实验设计的效果。我一直在关注几个教程并提出问题。 我首先需要通过将刺激输入时间序列与规范血液动力学响应函数(HRF)进行卷积来建模BOLD响应。我检查的第一个教程说,只要“形状”,就可以制作任何振幅的HRF。 HRF是正确的,因此他们在matlab中创建了以下HRF:

hrf = [ 0 0 1 5 8 9.2 9 7 4 2 0 -1 -1 -0.8 -0.7 -0.5 -0.3 -0.1 0 ]

然后通过使用' conv'将HRF与刺​​激进行卷积。这样:

hrf_convolved_with_stim_time_series = conv(input,hrf);

这是非常简单的,但我希望我的模型最终尽可能准确,所以我检查了一个更高级的教程,他们做了以下工作。首先,他们创建了一个20个时间点的向量,然后使用了' gampdf'创建HRF的功能。

t = 1:1:20; % MEASUREMENTS
h = gampdf(t,6) + -.5*gampdf(t,10); % HRF MODEL
h = h/max(h); % SCALE HRF TO HAVE MAX AMPLITUDE OF 1

通过这种方式比较简单的方式有效吗?我想我有3个具体问题。

  1. ' gampdf'帮助页面超短,只说“' 6'和' 10'在每个函数调用中代表A'这是一个“形状”的形状。参数。这是什么意思?它没有提供其他信息。为什么第一次通话时为6,第二次通话为10?
  2. 这个问题与上述问题直接相关。此代码是针对TR = 1并且刺激非常短(如1s)的情况编写的。在我的情况下,我的TR = 2,我的刺激很长(12秒)。我尝试通过以下方式调整上面的代码来为我的情况制作一个有效的HRF:

    t = 1:2:40; % 2s timestep with the 40 to try to equate total time to above
    h = gampdf(t,6) + -.5*gampdf(t,10); % HRF MODEL
    h = h/max(h); % SCALE HRF TO HAVE MAX AMPLITUDE OF 1
    
  3. 因为我不知道' gampdf'参数意味着(或者说那条线的作用,实际上)我不确定这会给我什么,我正在寻找。我基本上得出20个值,其中1-14个数字值在其中,但15-20个都是0.我假设在整个12s刺激期间会有响应(前6个TRs所以值1-6 )通过适当的整改,这可能是其余的价值,但我不确定。

    最后的问题。其他代码没有'缩放' HRF的幅度为1.最重要的是这个吗?

1 个答案:

答案 0 :(得分:0)

您选择的规范HRF取决于BOLD信号来自大脑的位置。选择任何HRF是不合适的。您最好的模型来源是来自点亮的评论。我已经联系了一篇讨论merits of multiple HRF models的论文。方法部分提出了一些重点。