Matlab - Ploteo de variables-superposicion de intervalos de datos/sin datos

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 19 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Ploteo de variables-superposicion de intervalos de datos/sin datos

Publicado por Jorge (5 intervenciones) el 19/07/2017 22:14:03
Estimados

Estoy iniciandome en Matlab y requiero, a partir de un archivo de texto que almacena varios datos x mes, requiero construir una matriz de 12 meses pero con 40 datos por mes para establecer un conteo de cuantos valores en blanco existen por . Es decir, una matriz de 12x40 (o al reves), pero que en cada casilla por mes almacene conteos para 40 variables, para un despliegue final . Agradezco su ayuda, muchas gracias , saludos
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 Lindsey
Val: 419
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ploteo de variables-superposicion de intervalos de datos/sin datos

Publicado por Lindsey (119 intervenciones) el 20/07/2017 02:07:33
Hola ¿Podrías explicar de otro modo lo que deseas lograr? Es que así como lo escribiste no me quedó muy claro. También, si utilizas un ejemplo corto sería fabuloso.
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 19 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Ploteo de variables-superposicion de intervalos de datos/sin datos

Publicado por Jorge (5 intervenciones) el 20/07/2017 15:42:05
Hola Lindsey, lo que necesito generar es una matriz, o similar, que por cada mes de un año, almacene en cada casilla (mes), 40 variables donde debo hacer conteo de datos validos o en blanco para un proceso estadistico.
Es decir casillas de Ene-Dic y dentro de c/u contadores para 40 variables que se almacenan por mes de un registro de datos meteorologicos que se toman c/10 min por dia.

Muchas gracias y espero haberme explicado mejor.

Saludos

Jorge
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 Lindsey
Val: 419
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ploteo de variables-superposicion de intervalos de datos/sin datos

Publicado por Lindsey (119 intervenciones) el 20/07/2017 16:43:24
Hola, bueno primero puedes usar esta función para leer archivos de texto: dlmread, en el link encontrarás como usarla.
Captura-de-pantalla-339
Entonces si tengo los tres archivos que muestra la imagen para leerlos en matlab sería:
1
2
3
a=dlmread('arch1.txt');
b=dlmread('arch2.txt');
c=dlmread('arch3.txt');

Y para unir las tres columnas en una sola matriz:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
matriz=[a b c]
 
matriz =
 
    92    99    15
    98    80    16
     4    81    22
    85    87     3
    86    93     9
    17    24    90
    23     5    91
    79     6    97
    10    12    78
    11    18    84

Te lo escribo así porque fue lo que entendí de lo que explicaste, o sea en caso de que solo debas leer y unir la información de los archivos de texto. La verdad aún no me termina de cuadrar esta parte que dices "para establecer un conteo de cuantos valores en blanco existen por ." y "debo hacer conteo de datos validos o en blanco" así que no pude incorporarlo al ejemplo.
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 19 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Ploteo de variables-superposicion de intervalos de datos/sin datos

Publicado por Jorge (5 intervenciones) el 20/07/2017 22:12:06
Muchas gracias Lindsey, mira, basicamente requiero construir una aplicacion que, a partir de un archivo plano (txt, dat), que proviene de una planilla excel en formato (pero para la cantidad de datos se usaran archivos planos), donde se almacenan datos meteorologicos con alrededor de 40 variables (t°, lluvia, presiones, etc), tomadas diariamente y cada 10 minutos, lo que arroja hasta 4464 datos mensuales por c/variable (24 h*6 datos * 30-31 dias) .

Respecto de la consulta , requiero almacenar en una matriz de conteo (12 casillas por c/mes X 40 casillas por variable), aquellos valores en blanco o NaN. Sé que el titulo del post resultó inadecuado, pero no pude modificarlo ya que se me paso el tiempo.

Es decir meses 1..12; 1..40 casillas donde evaluo si el dato que adquiri con Importdata, esta en blanco o NaN y sumar a la respectiva casilla mes X casilla variable ese conteo y al final, decir, pej: en Enero estas son las variables y cantidades de datos en blanco.

Muchas gracias

Saludos

JC
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 Lindsey
Val: 419
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ploteo de variables-superposicion de intervalos de datos/sin datos

Publicado por Lindsey (119 intervenciones) el 21/07/2017 03:19:43

Parte 1


Okay por lo que veo, la estructura de cada mes es más o menos la siguiente:
1
2
3
4
5
6
Mediciones        var1    var2    var3
                  ____    ____    ____
 
    Medición 1     1       8      15
    Medición 2     7      14      16
    Medición 3    88      20      22
Donde las columnas serían las 40 variables y las filas las mediciones que se hacen el día por mes. Al leer los archivos de texto quedarías con doce matrices, las cuales recomendaría que se llamen mes1, mes2, mes3, o algo así pero que sean secuanciales para poder hacer lo que te voy a mencionar.
Supongamos que tienes dos meses que son los siguientes:

1
2
3
4
5
6
7
8
9
10
11
12
mes1 =[1     8    15
     7    14    16
    88    20    22];
mes2 =[6    13    95
    12    94    96
    18   100    77];
%------------------
for i=1:2 % Por cada mes
    for j=1:3 % Por cada variable
        eval(strcat('matriz_total{',num2str(i),',',num2str(j),'}=mes',num2str(i),'(:,',num2str(j),');'))
    end
end
Lo que se hace en el for es guardar las 3 filas de cada mes en una sola línea, o casilla como lo llamas tú. En este se genera una matriz total (que no es exactamente una matriz si no un arreglo de celdas) de dos filas (una por cada mes) y tres columnas (por cada variable) y cada casilla (o celda) contiene las tres mediciones que se hicieron por variable.
Si escribes en matlab el nombre de matriz_total obtienes:
1
2
3
4
matriz_total =
 
    [3x1 double]    [3x1 double]    [3x1 double]
    [3x1 double]    [3x1 double]    [3x1 double]
Para poder acceder a cada celda debes escribir la posición de la celda a la que quieres acceder entre llaves:
1
2
3
4
5
6
7
>>matriz_total{1,1}
 
ans =
 
     1
     7
    88

Parte 2


Supongo que te refieres a que quieres contar cuántos datos en blanco o en NaN hay por cada variable en cada mes.
Como ejemplo cambié algunos números que ya tenía en cada mes por cero, y pues hacer un for similar al anterior pero esta vez contando cuántos ceros hay por columnas:
1
2
3
4
5
6
7
8
9
10
11
12
mes1 =[1     8    15
     0    14    16
    0    20    22];
mes2 =[6    13    95
    12    0    96
    18   100    0];
%-----------------------
for i=1:2 % Por cada mes
    for j=1:3 % Por cada variable
        eval(strcat('matriz_conteo(',num2str(i),',',num2str(j),')=length(find(mes',num2str(i),'(:,',num2str(j),')==0));'))
    end
end
Como puedes ver en la matriz_conteo aparecen cuántas mediciones en cero hay por cada variable y cada mes:
1
2
3
4
5
6
>> matriz_conteo
 
matriz_conteo =
 
     2     0     0
     0     1     1

Sé que has mencionado que tú deseas contar espacios en blanco y NaNs, para detectar espacios en blanco tendrías que ver cómo están en tu archivo los espacios en blanco, y para los NaN podrías utilizar la función strcmp, sirve más o menos así:

1
2
3
4
5
6
7
>> x={'Hola' 'cómo' 'estás'};
>> y={'cómo'};
>> strcmp(x,y)
 
ans =
 
     0     1     0

Para saber cuántos 1 hay en ans puedes usar sum(ans)
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 19 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Ploteo de variables-superposicion de intervalos de datos/sin datos

Publicado por Jorge (5 intervenciones) el 21/07/2017 18:29:24
Muchas gracias, me servira mucho Lindsey.

Saludos!!

Jorge
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