如何使用逻辑索引分离矩阵中的单元格行?

时间:2015-11-29 20:50:33

标签: matlab matrix cell

l2 = [{'walk', 'water', 'warm', 'cheer', 'word', 'happy', 'whim', 'womb', 'wear', 'well'};
{'hello', 'here', 'hat', 'that', 'happy', 'hide', 'awesome', 'there', 'howl', 'harry'};
{'look', 'listen', 'lyer', 'hateful', 'lost', 'hatred', 'plot', 'player', 'plow', 'lay'};
{'goat', 'meat', 'hope', 'house', 'love', 'wall', 'down', 'up', 'sky', 'mount'};
{'go', 'golf', 'loser', 'gyrus', 'terrible', 'gallore', 'tug', 'thor', 'gear', 'leg'}];

所以我上面有这些数据,我希望能够将每一行分为正数或负数。 如上所示:我的第一行在中性词中有2个正面目标,第三行在中性词中有2个负目标。

现在,如果我在运行这个参与者每行按顺序查看每个单词的位置,那么如何才能获得对具有正目标与负目标的行的响应的准确性?

有什么想法吗? 请帮忙,我只是想弄清楚

到目前为止,我一直在考虑使用逻辑索引来分离正目标和负目标,但是如何使用单元格行呢?

我有这个:

positive_t = [1 1; 1 1; 0 0; 1 1; 0 0]

以上表示所有正目标为1,负目标为0,但我如何能够逐行正确分离它们?也。然后,如果我想找到参与者得到肯定行与负行的答案的时间。如何保存其准确性?

1 个答案:

答案 0 :(得分:0)

我假设1)你想测试一个人挑选正面或负面词的能力2)你已经有一个标准答案(作为你的测试标准),你将要比较被测者和#39;的回答。

我不知道你对积极的定义是什么,所以在某种意义上我也会接受你的测试,但我们假设你有这个标准答案:

std_answer = logical([ 0 0 0 0 0 1 0 0 0 1;...  % 'happy' and 'well'
               0 0 0 0 1 0 1 0 0 0;...          % 'happy' and 'awesome'
               0 0 0 1 0 1 0 0 0 0;...          % 'hateful' and 'hatred'
               0 0 1 0 1 0 0 0 0 0;...          % 'hope' and 'love'
               0 0 1 0 1 0 0 0 0 0 ]);          % 'loser' and 'terrible' 

这里的std_answer是一个逻辑数组,其元素数量与l2相同。无论你的答案是什么,它的值都是1(当然,作为你已经知道的测试人员。这里我只是做了一些猜测并假设标准答案来做一个例子),否则为0。

您可以将此面具应用于l2,结果将是您的答案

answers = l2(std_answer);

如果你真的希望一行一行,当然你可以这样做:

for ii = 1:size(l2, 1)
    sublist = l2(ii, :);
    submask = std_answer(ii, :);
    answer = sublist(submask);
end

在测试结束时,您将有一个测试人员的回复(让我们说你将其命名为test_response),这也是一个5 * 10逻辑阵列。您可以使用逻辑操作来比较被测者对标准答案的响应:

score = test_response & std_answer ;

score也将是一个逻辑数组,其1表示被测者响应和标准答案之间的匹配。