Matlab - Problema con bucle principal

 
Vista:
sin imagen de perfil

Problema con bucle principal

Publicado por JuanMa (37 intervenciones) el 27/05/2014 17:34:09
Hola, tengo un problema con el bucle de una función, resulta que todo lo de dentro funciona correctamente ejecutado paso a paso, pero no me funciona el bucle principal, la función, dada una matriz A, lo que hace es extraer las filas cuyo último valor esté dentro de un intervalo en una pequeña matriz, una vez en esta, se ordenan y la que queda la primera se guarda en otra matriz del tamaño de A llamada R, en A se va eliminando la fila que se coloca en R, de manera que deben de quedar en R reordenadas, el problema, es que al disminuir A y finalmente quedarse sin ninguna dimensión falla el programa; he intentado poner como condición que el bucle pare al quedarse A sin dimensiones, pero no funciona ¿Alguien sabe por qué?

Esto es para simular la recepción de mensajes de un bus de comunicaciones.

Abajo les dejo el código:

Muchas gracias.

Saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
% Recibir despacha los mensajes en orden de llegada
 
function R = recibir (tiempo)
 
load variables2; % Cargamos la matriz A
 
load variables; % Cargamos T
 
tr=T+(1.3100e-04); % Tiempo de recepción
 
tf = T; % Defino tf, tiempo final hasta el que se compara
 
tiempo = 2;
 
R(length(A),15) = zeros; % Inicializo la matriz en la que introducire todas las filas ordenadas
 
 
  b=0; % Inicializo b para contar el numero de mensajes dentro de un intervalo
 
  c=0; % Inicializo c, que contara la posicion a partir de la que se debe seguir rellenando R 
 
  %d=1; % Inicializo d, que es la marca del comparador
 
  tt=(1.3100e-04); % Tiempo de trama
 
 
  while (R((length(R)-10),15) == 0)        % Bucle para buscar los intervalos, la condicion no se cumple, no se porque
 
 
    if (A((b+1),15) <= tf)  % Comprobamos si t es menor que tf
 
        b=b+1; % Si es asi incrementamos b, que nos debe dar el numero de mensajes en dicho intervalo
 
        %d=d+1 % Incrementamos d para que se compruebe la línea siguiente
 
    else
 
            if (b==0)
 
         else
 
        B(b,15) = zeros; % Si no, con b, inicializamos una nueva matriz
 
        for r=1:b
 
        B(r,:) =  A(r,:);       % La rellenamos con los datos correspondientes de A
 
        end
 
        [x,y] = max(B(:,4));    % Obtenemos la fila con mas prioridad de B
 
        if ((B(y,15))<=tr) % Si el tiempo de esta fila es menor que el de recepcion podemos recibirla
 
        B(y,15)=B(y,15)+tt; % La despachamos en B
 
        R((c+1),:) = B(y,:);  % Introducimos en R esta fila
 
        c=c+1;  % Actualizamos c, que es la posicion a partir de la cual tenemos que rellenar R 
 
        A(y,:)=[]; % Borramos la fila de A
 
        b=0;
 
        end
 
            end
 
   tr=tr+T;   % Actualizamos tr
 
        tf=tf+T;    % Actualizamos tf  
 
    end
 
  end
 
  end
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problema con bucle principal

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/06/2014 01:33:34
Sube tus archivos variables2 y variable.
Pues sin ese datos nose puede ejecutar tu código para ver el error.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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