在Matlab中使用矩阵条件提取数据

时间:2013-03-02 18:24:50

标签: matlab optimization

我在Matlab中有一个矩阵,每行看起来像这样:

1 3 0.112 5.31275 4.61924 -6.50652

我想根据第一列中提供的值提取到不同的矩阵。我知道如何使用for循环执行此操作但是我有太多的要点让它在任何时候运行以分析所有内容。有更简单的方法吗?

这是我的for循环代码:

accelerometer = 1;
gyroscope = 0;
a = 1;
g = 1;

for i = 1:size(raw,1)
    if raw(i,1) == accelerometer
        accelData(a,:) = raw(i,2:6);
        a = a+1;
    else
        if raw(i,1) == gyroscope
            gyroData(g,:) = raw(i,2:6);
            g = g+1;
        end
    end
end

谢谢!

1 个答案:

答案 0 :(得分:1)

我相信可以使用下面的代码:

%# Create dummy matrix
raw = [rand(10,1)>=0.5 rand(10,5)];

accelerometer = 1;
gyroscope = 0;

accelData = raw(raw(:,1)==accelerometer,:)
gyroData = raw(raw(:,1)==gyroscope,:)

示例输出:

accelData =

1.0000    0.3517    0.0759    0.1622    0.4505    0.1067
1.0000    0.5853    0.5308    0.3112    0.2290    0.0046
1.0000    0.9172    0.9340    0.1656    0.1524    0.8173
1.0000    0.3804    0.0119    0.6892    0.0782    0.2599

gyroData =

     0    0.8308    0.0540    0.7943    0.0838    0.9619
     0    0.5497    0.7792    0.5285    0.9133    0.7749
     0    0.2858    0.1299    0.6020    0.8258    0.8687
     0    0.7572    0.5688    0.2630    0.5383    0.0844
     0    0.7537    0.4694    0.6541    0.9961    0.3998
     0    0.5678    0.3371    0.7482    0.4427    0.8001