aumentar velocidad proceso
Hola Juan.
Estuve revisando tu pregunta del foro. Y lo que sale al costado derecho del editor, son las advertencias sobre tu programa.
El programa que haz hecho esta bien, y de hecho te va a dar el resultado que deseas, pero el programa no es el optimo.
Que quiere decir esto: Que cuando ejecutes el programa se va a demorar mas de lo debido.
Para ver el tiempo de ejecucion utilizamos las funciones tic y toc de matlab.
Te copio el mensaje de adventencia de matlab
%==================================================
EXPLICACION
El tamaño de la variable indicada o matriz parece estar cambiando con cada iteración del bucle. Normalmente, este mensaje aparece porque es una matriz de crecimiento por cesión o concatenación. El crecimiento de una matriz por cesión o concatenación puede ser costoso. Para grandes series, MATLAB debe asignar un nuevo bloque de memoria y copiar el contenido de la matriz más para la nueva matriz, ya que hace que cada asignación. Los programas que cambie el tamaño de una variable de esta forma pueden pasar la mayor parte de su tiempo de ejecución de esta actividad ineficiente.
Por las mismas razones, hay sobrecarga significativa en la reducción de una matriz o en cambiar el tamaño de una variable en cada iteración
ACCION SEGERIDA
Considere una preasignacion una variable o una matriz antes de entrar en el bucle puede ser zeros, ones, cell o una función similar. Preallocating evita la necesidad de MATLAB para copiar los datos de una matriz a otra dentro del bucle. Para obtener ejemplos de código que pueden hacer y no asignar previamente una matriz, consulte "Preallocating matrices".
"Preallocating matrices".
(Preasignación hace innecesario que MATLAB para cambiar el tamaño de una matriz cada vez que agrandarlo. Utilice la función de preasignación apropiado para el tipo de matriz que se está trabajando.)
Cuando una matriz crece mediante la asignación de más allá del final de la matriz o mediante la concatenación, preasignación sólo no mejora el rendimiento. El código también debe utilizar los índices explícito.
Si usted no sabe el tamaño de un arreglo antes de que comience el bucle, se asigna previamente, y luego si es necesario, reducirla después del bucle finaliza.
Si alguna de las siguientes condiciones se cumplen, podría ser conveniente suprimir este mensaje, tal como se describe en:
• El código del bucle es la búsqueda de eventos poco frecuentes o excepcionales, pero no hay que esperar para encontrar tales eventos. (En este caso, puede ser razonable para hacer crecer la matriz sólo como el bucle encuentra estos eventos.)
• El conjunto es pequeño y seguirá siendo pequeña, por lo tanto, el impacto de volver a copiar también es pequeño.
• El código preallocates la matriz, pero de una manera que M-Lint no reconoce
%===========================================
Ahora te mando dos programas con sus respectivos tiempos de ejecucion:
Este el primer programa , esta optimizado y su tiempo de ejecucion. Ademas en la parte derecha arriba del editor de matlab, está de color verde.
tic
X=[0 1 2];
Y=[0 1 1.5];
n=length(X);
Alfa=zeros(1,n-1);
for i=1:n-1
Alfa(i)=atand((abs(Y(i+1))-abs(Y(i)))/abs(X(i+1)-X(i)));
end
toc
clear
%tiempo de ejecuion:
Elapsed time is 0.000085 seconds.
Este es el segundo programa, y su tiempo de ejecuion.
tic
X=[0 1 2];
Y=[0 1 1.5];
n=length(X);
alfa=[];
for i=1:n-1
Alfa=atand((abs(Y(i+1))-abs(Y(i)))/abs(X(i+1)-X(i)));
alfa=[alfa Alfa];
end
toc
clear
%tiempo de ejecuion:
Elapsed time is 0.000098 seconds.
Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS EN MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN MATLAB