SoloCodigo

Programación Específica => Matlab => Mensaje iniciado por: pvalienti en Sábado 29 de Noviembre de 2008, 22:55

Título: ERROR que no comprendo
Publicado por: pvalienti en Sábado 29 de Noviembre de 2008, 22:55
Estimados colegas. Tengo un problema al correr un programa que estoy haciendo. A continuación les pego el error de MATLAB y el codigo del m.file problematico:


In an assignment  A(I) = B, the number of elements in B and
 I must be the same.


EL CODIGO ES:

function f=balances2(zi,yi);

global FT0 densicat S F0 Y0 perim N U GN2 P
Fi=yi(1:5);
T=yi(6);
Fpi=yi(7:8);
Tp=yi(9);

Ft=sum(Fi)
Ftp=sum(Fpi);

%calculo del cp ponderado%

cp0=Cp(T);

for i=1:5
    fracc_mol(i)= Fi(i)/Ft;
end

Cpmi = 0;

for j=1:5
    Cpmi=Cpmi + cp0(j)*fracc_mol(j);
end

cppond=Cpmi;

cppond_p= (Fpi(1)/Ft)*cp0(4)+(GN2/Ftp)*cp0(6)



%Vector balances%



BAL(1)= -densicat * S * r(T,Fi)
BAL(2)=-densicat * S * r(T,Fi);
BAL(3)= densicat * S * r(T,Fi);
BAL(4)=densicat * S * r(T,Fi) - perim * JH2(T,Fi,Fpi);                     ¡¡¡¡ACA ES DONDE SUPUESTAMENTE ESTA EL ERROR!!!!
BAL(5)= 0;
DHi= delta_H(T);
DH=DHi.y(11)
BAL(6)=-(DH* densicat * S * r(T,Fi)/(cppond*Ft))+ ((U*perim*3600*(Tp-T))/(cppond*Ftp));
BAL(7)=perim * JH2(T,Fi,Fpi);
BAL(8)=0;                                          
BAL(9)=(U*perim*N*3600*(T-Tp))/(cppond_p*Ftp);  %balance de energia permeado%
f=BAL;
Título: Re: ERROR que no comprendo
Publicado por: allisap en Lunes 1 de Diciembre de 2008, 16:43
Saludos...

este error es comun cuando intentas asignar una matriz o vector  a otra de un tamaño menor..
revisa el tamaño de tus vectores Ay B


Victor Pasilla Campos.
Puebla. Mexico.
Título: Re: ERROR que no comprendo
Publicado por: Toph en Martes 2 de Diciembre de 2008, 17:26
Cita de: "pvalienti"
BAL(4)=densicat * S * r(T,Fi) - perim * JH2(T,Fi,Fpi); ¡¡¡¡ACA ES DONDE SUPUESTAMENTE ESTA EL ERROR!!!!

El problema esta aqui:
Citar
densicat * S * r(T,Fi) - perim * JH2(T,Fi,Fpi)
esto debe de dar algo que no se puede asignar a la posicion cuatro del vector BAL ¿sabes que da? y es raro porque si fuera 0, numero negativo o un numero grande no habria problema.