• Viernes 17 de Abril de 2026, 21:23

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - rodrikas

Páginas: [1]
1
Matlab / bucle abreviado
« en: Viernes 6 de Noviembre de 2009, 18:01 »
Hola,

Respecto a la cuestión relacionada con la optimización del bucle for (que plantee ayer), dejo el script de forma más abreviada
(tan sólo con el bucle for) para que sea más fácil de interpretar. Muchas gracias por todo!

% Te dato
n=length(Te);
for i=1:n
syms L
d=52;
pi=3.1416;
L=solve(L-(9.81*Te(i)^2/(2*pi))*tanh((2*pi/L)*d));
end

2
Matlab / Optimización bucle for
« en: Jueves 5 de Noviembre de 2009, 18:53 »
Hola,

Necesito resolver una ecuación implicita (ecuación de dispersión) de forma sucesiva para muchos valores (aproximadamente 100.000 veces).
El script funciona bien, lo que ocurre es que a partir de un determinado número de resoluciones (aproximadamente 1000-2000), se empieza a raletizar.
El resultado es que tengo que dividir el archivo en varios pequeños y la resolución de todos los casos me puede llevar más de una semana.
Supongo que esto es debido al bucle for que tengo en el script, aunque no estoy del todo seguro. A continuación dejo el script. Estaría agradecido si alguien
le pudiese echar un vistazo y corregirlo para su optimización. Muchas gracias por todo!

Hm0=data(1:100000,5);    %dato
Tp=data(1:100000,9);   %dato
Te=0.9*Tp;              %dato

fidw=fopen('wave_power','wt');
n=length(Te);
for i=1:n
syms L
d=52;                  
pi=3.1416;
L=solve(L-(9.81*Te(i)^2/(2*pi))*tanh((2*pi/L)*d));
L=double(L);
L=abs(L);
vector_L(i)=L;      
k=2*pi/L;
c=L/Te(i);
n=0.5*(1+(2*k*d/sinh(2*k*d)));
cg=n*c;
J=((1/16)*1025*9.81*Hm0(i)^2*cg)*0.001;  %kW/m
fprintf(fidw,'%03.1fn',J);
end
fclose(fidw);

Páginas: [1]