[ Foro de Python ]

De Matlab a Python

15-Mar-2018 02:52
Invitado (Jesus Sequera)
0 Respuestas

Hola a todos, tengo un código .txt de Matlab y quisiera pasarlo a Python, puesto que soy un aficionadoen Python  y no conozco bien el lenguaje me esta costando mas de lo que hubiera esperado, alguna sugerencia? o ayuda?

Anexo el código que quiero traspasar.

%Datos de entrada al Programa
V=1: 1:700; %Velocidad de enfriamiento(°C/s) (Variable).
To=850; %Temperatura de inicio de estudio (T de Austenización)
(Conocido).
N = 7; %Tamaño de Grano (Conocido).
C = 0.26; %Porcentaje de Carbono (Conocido).
Mn = 0.87; %Porcentaje de Manganeso (Conocido).
Cr=0;% El % de Cromo.
Si=0.15;% El % de Silicio.
Mo=0.26;% El % de Molubdeno.
Ni=0;% El % de niquel
R = 8.31447; %Constante Universal de los
Gases(kJ/(kMol*K)(Conocido).
Tf = 670; %Temperatura de Estabilización de la Ferrita "Ar3"
(Valor Tabulado HandBook ASM).
Tp = 760; %Temperatura de Estabilización de la Perlita
"Ar1"(Valor Tabulado Handbook ASM).
%Tb=830-270.*C-90.*Mn-37.*Ni-70.*Cr-83.*Mo;
Tb=844-597.*C-63.*Mn-16.*Ni-78.*Cr;
TMs(1:length(V))=521-353.*C-24.3.*Mn-225.*Si-27.4.*Ni17.7.*Cr-25.8.*Mo;
%Temperatura de inicio de la Martensita.
Voli = 0.01; %Volumen de transformación inicial de
transformación de Austenita (Conocido).
Volf = 0.99; %Volumen de transformación final de la Austenita
(Conocido).
%%Regla de la palanca para d
C-2
l=1;
T=To;
i=1;
t=0;
tm(j)=tms;
tms=tms+10000;
%Calculo de las temperaturas de estudio a las diferentes
velocidades de
%enfriamiento
while T>150
T(i)=To-t.*V(j);
t=t+0.1;
Dt(i)=t;
i=i+1;
end
%Cálculo de las ecuaciones necesarias para obtener el TauF
y TauP de la TTT.
%Cálculo de Df para TauF.
Df = exp(-23500./(R.*T));
%Cálculo de TauF.
TauF01 = ((60.*Mn)./((6.*(2.^(N./8)).*((TfT).^3).*Df))).*I01.*10^5;
%Cálculo de Dp.
Sp = 1./exp(-27500./(R.*T));
Dp = Sp.^-1;
%Cálculo de TauP.
TauP = (1.8)./(6.*2.^(N./8).*(Tp-T).^3.*Dp).* I.*10^6;
TauP01 = (1.8)./(6.*2.^(N./8).*(Tp-T).^3.*Dp).*
I01.*10^6;
%Calculo de TauB
TauB=0;
TauB01=0;
while l<= length(T)
if T(l)<Tb
TauB(l)=((2.33+10.*C+4.*Cr+19.*Mo).*10.^-
4)./(6.*2.^(N./8).*(Tb-T(l)).^2.*exp(-
27500./(R.*T(l)))).*I.*10.^3*10^5;
TauB01(l)=((2.33+10.*C+4.*Cr+19.*Mo).*10.^-
4)./(6.*2.^(N./8).*(Tb-T(l)).^2.*exp(-
27500./(R.*T(l)))).*I01*10^5;
end
l=l+1;
end
%Inicio de la regla de la adición y la JMAK, cálculos para la
CCT.
C-3
i=1;
Xf=0;
Xp=0;
Xb=0;
while i<=length(T)

if T(i)<TMs
Fm=1-exp(-0.011.*(TMs-T(i))); %Porcentaje de volumen
transformado en Martensita
end
%Transformación de la Bainita
if T(i)<Tb
%Regla de la adición de la bainita
if Xb<=1
FunXb=Dt(i)./TauB01(i);
Xb=Xb+FunXb;
Xib(i)=Xb;

else
%Ecuación de JMAK de la Bainita
if Xb<100 && Xb>=1
tb(j)=Dt(i-1);%Tiempo en el que el inicia la
transformación en Bainita
Tbt(j)=T(i-1);%Temperatura en el que inicia la
transformación en Bainita
Xb=1000000000000000;
h=i-1;
Fib=0;% Porcentaje de transformada de Bainita
Titajb=Dt(i);%Tiempo de transformación en JMAK
nb=0;%Parametro n para la JMAK de la Bainita
bb=0;%Parametro b para la JMAK de la Bainita
AB(j)=0;
while h<=length(TauB01)
if Fib<1
%Parametros b y n de la Bainita
nb(h)=(log((log(1-Voli))./(log(1-
Volf))))./(log(TauB01(h)./TauB(h)));
bb(h)= -((log(1-
Voli))./(TauB01(h).^nb(h)));
%Ecuación JMAK
Fib=1-exp(-bb(h).*(Titajb+0.5).^nb(h));
Titajb=((-log(1-
Fib))/bb(h)).^(1./nb(h));
%Guardando valor de transformada
if AB(j)<Fib
AB(j)=Fib;
C-4
BB(j)=Titajb;
end
else if Fib>=0.99 && Fib<=10
AB(j)=Fib;
BB(j)=Titajb;
Fib=1000000;
tbf(j)=Dt(h-1);
Tbtf(j)=T(h-1);
end
end
h=h+1;
end
end
end
end
%Transformación en Perlita
if T(i)<Tp
%Regla de la adición de la Perlita
if Xp<=1
FunXp=Dt(i)./TauP01(i);
Xp=Xp+FunXp;
Xip(j)=Xp;
AP(j)=0;
else
if Xp<10 && Xp>=1
tp(j)=Dt(i-1);
Tpt(j)=T(i-1);
Xp=1000000;
h=i-1;
Fip=0;
Titajp=Dt(i);
np=0;%Parametro n para la Perlita
bp=0;%Parametro b para la Perlita
Fipx=0;

%Ecuación de JMAK para Perlita
while h<=length(TauP)
if Fip<1
np(h)=(log((log(1-Voli))./(log(1-
Volf))))./(log(TauP01(h)./TauP(h)));
bp(h)= -((log(1-
Voli))./(TauP01(h).^np(h)));
%Ecuación JMAK
Fip=1-exp(-bp(h).*(Titajp+0.5).^np(h));
Titajp=((-log(1-
Fip))/bp(h)).^(1./np(h));
if AP(j)<Fip
C-5
AP(j)=Fip;
BP(j)=Titajp;
end
else if Fip>=0.99 && Fip<=10
AP(j)=Fip;
BP(j)=Titajp;
Fip=1000000;
tpf(j)=Dt(h);
Tptf(j)=T(h);
end
end
h=h+1;
end
end
end
end

if T(i)<Tf
if Xf<=1
FunXf=Dt(i)./TauF01(i);
Xf=Xf+FunXf;
Xif(j)=Xf;
PorFer(j)=0;

else
if Xf<10 && Xf>=1
tf(j)=Dt(i-1);
Tft(j)=T(i-1);
Xf=1000000;
PorFer(j)=Ceq;

end
end
end
i=i+1;
end
% PorAus(j)=1-PorFer(j);
%PorPer(j)=AP(j)*PorAus(j);
%PorAus(j)=PorAus(j)-PorPer(j);
%PorMar(j)=PorAus(j)*Fm(j);
%PorAus(j)=PorAus(j)-PorMar(j);
end
%n=1;
%Tx=To;
%t=0;
%while Tx>267.6210
%Tx(n)=To-t.*V(10);
C-6
%Dtx(n)=t;
%t=t+0.5;
%n=n+1;
%end
semilogx(tf,Tft,tp,Tpt,tb,Tbt,tm,TMs,tpf,Tptf)
legend('Ferrita','Perlita','Bainita','Ms')
title('CURVA CCT ACERO 4027')
xlabel('Tiempo')
ylabel('Temperatura')
xlim([10^-1 10^6])
ylim([23 1200])




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)