Matlab - Separar pares de impares

 
Vista:

Separar pares de impares

Publicado por carlos (16 intervenciones) el 29/04/2013 14:25:18
Buenas,

Tengo una matriz S1 1880359x22 double. La columna quinta corresponde a minutos, leidos de 1 en 1. Lo que quiero hacer es separar las filas con minutos pares (S1ok) y descartar aquellas que tienen minutos impares. Aquí mi code:

k=1;
for i=1:length(S1(:,1))
if rem(S1(i,5),2)==0
S1ok(k,:)=S1(i,:);
k=k+1;
end
end

El problema es que llevo como dos horas esperando el resultado y aún me dice que está busy..esto es normal? sabéis de alguna forma que sea más rápida para el ordenador?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Separar pares de impares

Publicado por Dave (1094 intervenciones) el 30/04/2013 07:02:35
Hola Carlos;

Es demasiado tiempo el que llevas esperando, aunque veo que la matriz de datos es bien grande, pero de todas maneras no debería ser mucho tiempo.

Te sugiero que hagas lo siguiente:

% Separa la columna de los minutos en un nuevo vector
Minutos = S1(:,5);

% Ahora busca los minutos que son pares
ind = find(rem(Minutos,2)==0);

% Ahora separa los minutos pares
Minpar = MInutos(ind);

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Separar pares de impares

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 30/04/2013 21:31:12
1
2
3
4
5
6
7
8
9
10
11
clear all
S1=round(10*rand(1880359,22));
k=1;
for i=1:size(S1,1)
    if rem(S1(i,5),2)==0
        S1ok(k,1)=S1(i,5);
        k=k+1;
    end
end
 S1ok;
 whos


EXECUTION

1
2
3
4
5
6
Name            Size                Bytes  Class     Attributes
 
  S1        1880359x22            330943184  double
  S1ok       939719x1               7517752  double
  i               1x1                     8  double
  k               1x1                     8  double
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar