Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Integración de datos numéricos

Este ejemplo muestra cómo integrar un conjunto de datos de velocidad discreta numéricamente para aproximar la distancia recorrida. La familia solo acepta identificadores de función como entradas, por lo que esas funciones no se pueden usar con conjuntos de datos discretos.integral Utilice o cuando una expresión funcional no esté disponible para la integración.trapzcumtrapz

Vea los datos de Velocity

Tenga en cuenta los siguientes datos de velocidad y datos de tiempo correspondientes.

vel = [0 .45 1.79 4.02 7.15 11.18 16.09 21.90 29.05 29.05 ... 29.05 29.05 29.05 22.42 17.9 17.9 17.9 17.9 14.34 11.01 ... 8.9 6.54 2.03 0.55 0]; time = 0:24;

Estos datos representan la velocidad de un automóvil (en m/s) tomado a intervalos de 1 seg durante 24 s.

Trace los puntos de datos de velocidad y Conecte cada punto con una línea recta.

figure plot(time,vel,'-*') grid on title('Automobile Velocity') xlabel('Time (s)') ylabel('Velocity (m/s)')

La pendiente es positiva durante los períodos de aceleración, cero durante los períodos de velocidad constante, y negativo durante los períodos de desaceleración. En el tiempo, el vehículo está en reposo con m/s.t = 0vel(1) = 0 El vehículo se acelera hasta alcanzar una velocidad máxima de m/s y mantiene esta velocidad durante 4 s.t = 8vel(9) = 29.05 A continuación, se desralentiza hasta m/s por 3 y, finalmente, se vuelve a descansar.vel(14) = 17.9 Dado que esta curva de velocidad tiene varias discontinuidades, una sola función continua no puede describirla.

Calcule la distancia total recorrida

realiza una integración discreta mediante el uso de los puntos de datos para crear trapezoides, por lo que es muy adecuado para el manejo de conjuntos de datos con discontinuidades.trapz Este método asume el comportamiento lineal entre los puntos de datos, y la precisión puede reducirse cuando el comportamiento entre los puntos de datos es no lineal. Para ilustrar, puede dibujar trapezoides en el gráfico utilizando los puntos de datos como vértices.

xverts = [time(1:end-1); time(1:end-1); time(2:end); time(2:end)]; yverts = [zeros(1,24); vel(1:end-1); vel(2:end); zeros(1,24)]; p = patch(xverts,yverts,'b','LineWidth',1.5);

calcula el área bajo un conjunto de datos discretos rompiendo la región en trapezoides.trapz A continuación, la función añade el área de cada trapecio para calcular el área total.

Calcule la distancia total recorrida por el automóvil (correspondiente al área sombreada) integrando los datos de velocidad numéricamente utilizando.trapz De forma predeterminada, se supone que el espaciado entre los puntos es si se utiliza la sintaxis.1trapz(Y) Sin embargo, puede especificar un espaciado diferente uniforme o no uniforme con la sintaxis.Xtrapz(X,Y) En este caso, el espaciado entre las lecturas en el vector es, por lo que es aceptable utilizar el espaciado predeterminado.time1

distance = trapz(vel)
distance = 345.2200 

La distancia recorrida por el automóvil en s es de unos 345,22 m.t = 24

Trazar distancia acumulada recorrida

La función está estrechamente relacionada con.cumtrapztrapz Aunque devuelve solo el valor de integración final, también devuelve valores intermedios en un vector.trapzcumtrapz

Calcule la distancia acumulada recorrida y trace el resultado.

cdistance = cumtrapz(vel); T = table(time',cdistance','VariableNames',{'Time','CumulativeDistance'})
T=25×2 table
    Time    CumulativeDistance
    ____    __________________

      0                0      
      1            0.225      
      2            1.345      
      3             4.25      
      4            9.835      
      5               19      
      6           32.635      
      7            51.63      
      8           77.105      
      9           106.15      
     10            135.2      
     11           164.25      
     12           193.31      
     13           219.04      
     14            239.2      
     15            257.1      
      ⋮

plot(cdistance) title('Cumulative Distance Traveled Per Second') xlabel('Time (s)') ylabel('Distance (m)')

Consulte también

| |

Temas relacionados