Matlab - Reducir dos vectores diferentes a una misma longitud

   
Vista:

Reducir dos vectores diferentes a una misma longitud

Publicado por Esther (2 intervenciones) el 07/11/2017 04:05:42
Hola a todos, quisiera por favor me ayuden con sugerencias de como puedo hacer lo siguiente. Tengo 4 vectores con los siguientes tamaños:

tiempo (720x1) tiempo_real (3739x1)
temperatura (720x1) temperatura_real (3739x1)

Cada vector tiempo va asociado con la temperatura en ese instante de tiempo, real y otro medido. Necesito llevar los dos vectores de temperatura a la misma longitud (720), pero sus valores deben coincidir para los mismos tiempos. Ya intenté interpolando con interp1 pero por otros motivos no es lo recomendable en este caso.

Por lo tanto, quisiera encontrar dentro del vector de "tiempo_real",que es mas grande, que valores de "tiempo" coinciden y sacar para esos instantes los de "temperatura_real", así al final reducir el vector de temperatura más grande a uno que sea del mismo tamaño que el más pequeño, osea llevarlo de 3739 a 720.

No se si me expliqué, en sí necesito tener un vector del tamaño 720x1 con valores extraidos de "temperatura_real" que coincidan con los tiempos del vector "tiempo".

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 JOSE JEREMIAS CABALLERO

Reducir dos vectores diferentes a una misma longitud

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (4473 intervenciones) el 08/11/2017 01:20:06
1
2
3
4
5
6
7
8
9
10
clear all
clc
tiempo=unique(sort(round(20*rand(1,10))));
tiempo_real=unique(sort(round(20*rand(1,60))))
temperatura_real=round(20*rand(1,60))
for i=1:length(tiempo)
    [~, columna]=find(tiempo(i)==tiempo_real);
    temperatura_reducida(i)=temperatura_real(columna);
end
    temperatura_reducida


1
2
3
4
5
6
7
8
9
10
11
tiempo =
     3     5     7     8    10    14    15    16
tiempo_real =
     0     1     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20
temperatura_real =
  Columns 1 through 31
     2    19    15    17    18    18    17     9    16    15     5    20    11     1     0     4     6     2     7    14    10    19    16    12     8    20    16    12    18     2     7
  Columns 32 through 60
     7    19    13    17    14     0    14    10     3    18     8    11    17    20     2    17    14    12     7    19     1     1     1    10    14     3     5    11    13
temperatura_reducida =
    15    18    17     9    15     1     0     4


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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
Revisar política de publicidad