
Problema Matriz Matlab
Publicado por Diego (19 intervenciones) el 25/07/2013 06:19:14
Hola como están, de nuevo ando por aca con otro problemita del famoso Matlab.
El asunto es que tengo el siguiente código en una gui que estoy creando:
Con esto creo una tabla de 3 columnas, la primera me da numeros consecutivos, la segunda, tiempo en microsegundos y la tercera una constante, la tabla más o menos queda así:
1 90 100
2 15 100
3 40 100
4 45 100
5 26 100
6 85 100
7 12 100
......
que son los valores que me dan: w, q y z2 respectivamente.
Bueno el gran problema es que necesito sumar la columna del medio hasta que me de 1s (ya que esta en micro segundos) y cuando llegue a 1 crear la primera fila de la nueva matriz, suponiendo que al sumar tres valores obtengo el 1, la primera fila quedaría
3 1 300
2 1 200
5 1 500
9 1 900
3 1 300
4 1 400
....
lo que esta matriz me dice es que en el primer sgundo llegaron 3paquetes y 300bytes, en el segundo segundo dos paquetes y 200 bytes, en el tercer segundo 5 paquetes y 500 bytes y asi sucesivamente.
es decir el primer elemento es el conteo de los valores, el segundo es la suma y el tecero tambien la suma (aunque al ser constante se puede hacer otra cosa. Y repito el proceso desde donde me quedé..... y así armo la segunda matriz.
se supone que estamos simulando un trafico de datos, asi que lo que necesito es dibujar una diagrama bar() donde en el eje de las x estén los paquetes (la primera columna de la segunda matriz) y en el ejede lasy los bytes totales (la tercer columna de la tabla).
Espero haberme explicado, por favor que alguien me heche una mano para saber como hago eso.
Realmente el problema esta en la columna central ya que no se como crear un vector a partir de las sumas, ya que será obligadamente mas pequeño que el original.
Un saludo y gracias de antemano¨.
El asunto es que tengo el siguiente código en una gui que estoy creando:
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
A=handles.edit1;
tm=1000000*(A/1024/1024);
set(handles.pr,'String',tm);
t1=poissrnd(tm,1,A);
b=length(t1);
media=mean(t1);
varian=var(t1);
set(handles.text5,'String',media);
set(handles.text6,'String',varian);
handles.m1=media;
guidata(hObject,handles);
handles.m11=varian;
guidata(hObject,handles);
s=0;
v=[1:b];
w=((v)');
for i=1: b
s = s+ t1(i);
x(i)=s;
end
q=((x)');
B=handles.edit2;
z=zeros(1,b);
z1=B+z;
z2=((z1)');
set(handles.uitable1,'Data',[w q z2])
Con esto creo una tabla de 3 columnas, la primera me da numeros consecutivos, la segunda, tiempo en microsegundos y la tercera una constante, la tabla más o menos queda así:
1 90 100
2 15 100
3 40 100
4 45 100
5 26 100
6 85 100
7 12 100
......
que son los valores que me dan: w, q y z2 respectivamente.
Bueno el gran problema es que necesito sumar la columna del medio hasta que me de 1s (ya que esta en micro segundos) y cuando llegue a 1 crear la primera fila de la nueva matriz, suponiendo que al sumar tres valores obtengo el 1, la primera fila quedaría
3 1 300
2 1 200
5 1 500
9 1 900
3 1 300
4 1 400
....
lo que esta matriz me dice es que en el primer sgundo llegaron 3paquetes y 300bytes, en el segundo segundo dos paquetes y 200 bytes, en el tercer segundo 5 paquetes y 500 bytes y asi sucesivamente.
es decir el primer elemento es el conteo de los valores, el segundo es la suma y el tecero tambien la suma (aunque al ser constante se puede hacer otra cosa. Y repito el proceso desde donde me quedé..... y así armo la segunda matriz.
se supone que estamos simulando un trafico de datos, asi que lo que necesito es dibujar una diagrama bar() donde en el eje de las x estén los paquetes (la primera columna de la segunda matriz) y en el ejede lasy los bytes totales (la tercer columna de la tabla).
Espero haberme explicado, por favor que alguien me heche una mano para saber como hago eso.
Realmente el problema esta en la columna central ya que no se como crear un vector a partir de las sumas, ya que será obligadamente mas pequeño que el original.
Un saludo y gracias de antemano¨.
Valora esta pregunta


0