2013-03-02 3 views
0

У меня есть матрица в Matlab, где каждая строка выглядит примерно так:Извлечение данных с условиями из матрицы в Matlab

1 3 0.112 5.31275 4.61924 -6.50652 

И я хочу, чтобы извлечь для различных матриц в соответствии со значением, представленным в первой колонке. Я знаю, как это сделать для циклов, но у меня слишком много очков, чтобы оставить это выполнение в любое время, которое потребуется для анализа всего. Есть ли более простой способ сделать это?

Вот мой код для петель:

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

Я верю что-то вроде ниже код может быть использован:

%# 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 
+0

Большое спасибо , это прекрасно работает! –

Смежные вопросы