Matlab - 如何分析二进制行为响应的序列?

时间:2015-07-14 15:34:29

标签: matlab sequence analysis

我对之前的回答对行为测试中当前响应的影响感兴趣。例如,如果在我的测试中有三个先前的试验,则参与者回答' no',' yes',' yes' '是'对当前试用版的回复与先前回答' yes',' yes',' no' 等有所不同,依此类推。

为了分析这一点,我需要在我的数据集中找到特定响应序列的所有实例。例如每当是是是发生时,每次是,否是发生......,等等所有可能的是/否序列排列。

为了做到这一点,我可以在Matlab中硬编码一长串if / else语句(用于固定数量的先前试验),或者我可以编写每个可能的序列并搜索它但两种方法都很慢来写。

而不是手动编码以进行固定数量的先前试验,即之前的三个响应,是否有合理的解决方案可用于之前的 n 试验?即,一旦我想分析前5个试验,而不是之前的3个试验,所需的if / else声明链就变得无法忍受了!

NB。响应数据总是二进制的(即左对右,或对与否等)。

非常感谢提前。

修改的 以下插图可能有助于澄清。这个快速示例按序列中的每个响应进行运行,如果当前响应为“'”,则计算前两次尝试中是/否的每个排列的实例数。

mySequenceData = {'y' 'y' 'y' 'n' 'n' 'y' 'n' 'n' 'y' 'y' 'n' 'y'};
numPreviousTrials = 2;

yyCount = 0;
ynCount = 0;
nyCount = 0;
nnCount = 0;

for i = numPreviousTrials+1:length(mySequenceData)
    currentTrial = mySequenceData(i);
    if strcmp(mySequenceData(i), 'y')
        if strcmp(mySequenceData(i-1), 'y')
            if strcmp(mySequenceData(i-2), 'y')
                yyCount = yyCount+1;
            elseif strcmp(mySequenceData(i-2), 'n')
                nyCount = nyCount+1; 
            end
        elseif strcmp(mySequenceData(i-1), 'n')
            if strcmp(mySequenceData(i-2), 'y')
                ynCount = ynCount+1;
            elseif strcmp(mySequenceData(i-2), 'n')
                nnCount = nnCount+1; 
            end
        end
    end                       
end

如果我现在想要计算前3次试验或5次试验中的y / n排列,依此类推,我必须重新编写所有这些,并使用if / else语句变得几乎不可行。

我的问题是试图找到一个我可以从一开始就为n次试验而不是特定数量的先前试验的解决方案。

再次感谢。

1 个答案:

答案 0 :(得分:0)

它应该适合你:

bin\plugin install C:\Downloads\myplugin.gem

矩阵A2列出了所有可能的二进制组合。 矩阵counting_N计算组合出现的时间。