根据MATLAB中不同列的条件筛选出数据行

时间:2017-08-15 03:43:15

标签: matlab

我有一个实验数据,其中每一行都是不同的试验。该表有几列,其中包含有关试验的信息,然后是1000列数据。

我需要根据各种标准过滤掉某些试验(行),以便仅从有效试验中计算出均值。例如,我有一个包含准确度数据的列(0 =错误,1 =正确),以及一个包含响应时间数据的列(需要过滤掉响应< 200)。我假设我需要遍历每一行以根据我的标准创建一个新的真/假逻辑列(例如,有效的试验是准确度== 1& RT> 200)。

然后,我需要创建仅按照由另一列中的字符串定义的条件分组的有效试验的方法(例如,创建3表示基于具有“负”,“中性”和“正”的价格列)。我知道这可能比较简单,我是MATLAB的新手。所有建议都表示赞赏。

Valence  Acc RTs NumNan Data1 
'Negative' 1 540 0 278.5148611 
'Negative' 1 597 0 89.18152778 
'Negative' 1 381 0 173.5148611 
'Negative' 1 471 0 19.51486111 
'Negative' 1 535 0 2.514861111

1 个答案:

答案 0 :(得分:0)

您可以使用布尔逻辑进行操作。

假设您的数据存储在矩阵A中。

cond1 = A(:,2) == 1; % only select 'accurate' data 
cond2 = A(:,3) < 200; % response time <200 
cond3 = A(:,1) ~= 'Negative'; % non-negative trials

idx = cond1 & cond2 & cond3; % use 'AND' logic to find indices of satisfying records
B = A(idx,:); % pick out selected records and save in new matrix