Matlab - Comparar listas de diferentes dimensiones

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

Comparar listas de diferentes dimensiones

Publicado por Ariadna (20 intervenciones) el 12/08/2019 16:00:13
Para hacer este bucle; uso la condición de comparar dos listas (time y tempsref), el problema es que time es mucho más larga que tempsref, y me da errror.

Necesito sumar todos los datos de la lista power que tengo en ese intérvalo, alguien sabría cómo hacerlo?

1
2
3
4
5
6
7
8
9
10
11
12
13
i=1;
 
for j=1:length(time)
 
    if time(j)<= tempsref(i)
 
        power1(i)=power1(i-1)+ power(j);
 
    end
 
    i=i+1;
 
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

Comparar listas de diferentes dimensiones

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/08/2019 16:44:21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear
clc
time=20*rand(1,5)
tempsref=20*rand(1,3)
power=20*rand(1,5)
power1(1)=power(1);
 
for i=2:length(tempsref)
    for j=1:length(time)
        if time(j)<= tempsref(i)
            power1(i)=power1(i-1)+ power(j);
        else
           power1(i)=power(j);
        end
    end
end
power1


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>> comparar_lista
 
time =
 
   11.0458   12.5977    0.6398   12.2943    7.2482
 
 
tempsref =
 
    0.9907    9.7914    3.8502
 
 
power =
 
    2.4617    4.1099    2.9303    3.7814    0.8530
 
 
power1 =
 
    2.4617    3.3147    0.8530

Aca un código sugerido a tu pregunta.
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: 35
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Comparar listas de diferentes dimensiones

Publicado por Ariadna (20 intervenciones) el 12/08/2019 17:41:06
No entiendo muy bien que valores está sumando para que salga ese 3.3147

Por ejemplo si las listas fueran:

time= 9,5 11 12.374 13 14 15.6 16.2

tempsref= 11 14 17

power= 2.4617 4.1099 2.9303 3.7814 0.8530 0.9 2.5

Lo que busco es que el resultado sea, la suma de los valores de power que se encuentre entre dicho intervalo:

power= 1: 6.5716 7.5647 3.4
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

Comparar listas de diferentes dimensiones

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/08/2019 17:49:41
¿9,5 dos números 9 y 5 o ese es 9.5 ?
power= 1: 6.5716 7.5647 3.4

¿el : ?.

Trata poner toda la informacion completa con un ejercicio resuelto y así puedas tener una respuesta más acertada. De lo contrario solo vas a recibir sugerencias. No puedo darte una respuesta precisa sino brindas todo los datos necesarios y además sino precisas lo que deseas exactamente.
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: 35
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Comparar listas de diferentes dimensiones

Publicado por Ariadna (20 intervenciones) el 12/08/2019 19:35:59
Suponiendo estas listas:

time= [9.5 , 11 , 12.374 , 13 , 14 , 15.6 , 16.2]

tempsref= [11 , 14, 17]

power= [2.4617 , 4.1099 , 2.9303 , 3.7814 , 0.8530 , 0.9 , 2.5 ]

El resultado que busco:

power= [ 6.5716 , 7.5647 , 3.4]

Es decir una nueva lista de las dimensiones de tempsref donde se han sumado los valores de power.
Perdón, la lista de antes se ha descolocado.
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

Comparar listas de diferentes dimensiones

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/08/2019 19:42:00
¿como obtienes al final los valores de power= [ 6.5716 , 7.5647 , 3.4]?
¿cada valor de este vector como lo obtienes?
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: 35
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Comparar listas de diferentes dimensiones

Publicado por Ariadna (20 intervenciones) el 12/08/2019 19:48:23
Como el primer término de temsperf es 11 comparo con time y veo que hay dos valores que cumplen (<=11) por tanto sumo los dos valores de power que se corresponden con esa posición. ( 2.4617 + 4.1099 = 6.5716 ) y ese es el primer término de la nueva lista (power1), luego sigo.
Veo que el siguiente término de tempsref es 14 y que hay tres términos ( 12.374 , 13 , 14 ) que cumplen la condición de ser 11 >=x <=14., por tanto sumo esos tres términos de la lista de power ( 2.9303 + 3.7814 + 0.8530 =7.5647 ) y lo mismo con el último.
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

Comparar listas de diferentes dimensiones

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/08/2019 20:01:01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear
time= [9.5 , 11 , 12.374 , 13 , 14 , 15.6 , 16.2]
tempsref= [11 , 14, 17]
power= [2.4617 , 4.1099 , 2.9303 , 3.7814 , 0.8530 , 0.9 , 2.5 ]
power1(1)=0;
kk=1;
for j=1:length(tempsref)
    s=0;
    for i=kk:length(time)
        if time(i)<=tempsref(j)
            s=s+power(i);
            kk=kk+1;
        end
    end
    power1(j)=s;
end
power1


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>> comparar_lista1
 
time =
 
    9.5000   11.0000   12.3740   13.0000   14.0000   15.6000   16.2000
 
 
tempsref =
 
    11    14    17
 
 
power =
 
    2.4617    4.1099    2.9303    3.7814    0.8530    0.9000    2.5000
 
 
power1 =
 
    6.5716    7.5647    3.4000
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: 35
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Comparar listas de diferentes dimensiones

Publicado por Ariadna (20 intervenciones) el 12/08/2019 21:05:56
Muchas gracias!!
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