declaracion de variables
Publicado por Abraham (1 intervención) el 15/03/2015 10:07:26
Tengo este programa que me calculo una matriz de admitancias, pero el problema es que tengo que ingresar el valor entre cada punto, y quiero hacer qe lo tome automaticamente de excel. Tengo problemas para darle valor a Yadm, no se en que parte del ciclo debe de localizarse para que se vayan guardando sus valores. En un ciclo quiero que compare que un valor (i,1) de la matriz RE sea >0 y qe el valor(i,2) = 0 o viceversa, en caso de serlo, que se vaya guardando en la matriz x, que a su vez alimentara la matriz Ybar, pero me despliega un error:
rror in ==> Calc_Ybarra at 19
if (RE{i,1}>0)&&(RE{i,2}==0)
o
rror in ==> Calc_Ybarra at 15
Yadm(1,m)=x;
El programa es el siguiente, y donde tengo problemas es lo que esta subrayado
function Ybar=Calc_Ybarra()
format compact
RE = xlsread('matriz.xls','Hoja1','A3:B8')
Z=xlsread('matriz.xls','Hoja2','A2:A7')
Num_nodos= max(RE);
Num_ramas=factorial(Num_nodos)/(factorial(2)*factorial(Num_nodos-2));
Num_ramas=Num_nodos+Num_ramas;
Ybar=zeros(Num_nodos);
for m=1:1:Num_nodos
fprintf('Digite la impedancia de los generadores y%d0',m);
for i=1:1:Num_nodos
if (RE{i,1}>0)&&(RE{i,2}==0)
x=Z(i,1)
else
if(RE(i,1==0)&& RE(i,2)>0)
x=Z(i,1)
end
end
end
Yadm(1,m)=x;
end
n2=Num_ramas-Num_nodos;
n=n2;
k=1;
while n~=0
for m=1:1:Num_nodos
if k>=m
else
fprintf('Digite la admitancia y%d%d',k,m);
f=input(': ');
Yadm2{n2-n+1}=['y',num2str(k),num2str(m),num2str(f)];
n=n-1;
end
end
k=k+1;
end
for m=1:1:Num_nodos
for n=1:1:Num_nodos
if m==n
Ybar(m,n)=Ybar(m,n)+Yadm(1,m);
for k=1:1:length(Yadm2)
if 1==strcmp(num2str(m),Yadm2{k}(2)) || 1==strcmp(num2str(m),Yadm2{k}(3))
Ybar(m,n)=Ybar(m,n)+eval(Yadm2{k}(4:end));
end
end
else
for k=1:1:length(Yadm2)
if 1==strcmp(strcat(num2str(m),num2str(n)),Yadm2{k}(2:3)) || 1==strcmp(strcat(num2str(n),num2str(m)),Yadm2{k}(2:3))
Ybar(m,n)=Ybar(m,n)-eval(Yadm2{k}(4:end));
end
end
end
end
end
fprintf('\n');
Ybar;
rror in ==> Calc_Ybarra at 19
if (RE{i,1}>0)&&(RE{i,2}==0)
o
rror in ==> Calc_Ybarra at 15
Yadm(1,m)=x;
El programa es el siguiente, y donde tengo problemas es lo que esta subrayado
function Ybar=Calc_Ybarra()
format compact
RE = xlsread('matriz.xls','Hoja1','A3:B8')
Z=xlsread('matriz.xls','Hoja2','A2:A7')
Num_nodos= max(RE);
Num_ramas=factorial(Num_nodos)/(factorial(2)*factorial(Num_nodos-2));
Num_ramas=Num_nodos+Num_ramas;
Ybar=zeros(Num_nodos);
for m=1:1:Num_nodos
fprintf('Digite la impedancia de los generadores y%d0',m);
for i=1:1:Num_nodos
if (RE{i,1}>0)&&(RE{i,2}==0)
x=Z(i,1)
else
if(RE(i,1==0)&& RE(i,2)>0)
x=Z(i,1)
end
end
end
Yadm(1,m)=x;
end
n2=Num_ramas-Num_nodos;
n=n2;
k=1;
while n~=0
for m=1:1:Num_nodos
if k>=m
else
fprintf('Digite la admitancia y%d%d',k,m);
f=input(': ');
Yadm2{n2-n+1}=['y',num2str(k),num2str(m),num2str(f)];
n=n-1;
end
end
k=k+1;
end
for m=1:1:Num_nodos
for n=1:1:Num_nodos
if m==n
Ybar(m,n)=Ybar(m,n)+Yadm(1,m);
for k=1:1:length(Yadm2)
if 1==strcmp(num2str(m),Yadm2{k}(2)) || 1==strcmp(num2str(m),Yadm2{k}(3))
Ybar(m,n)=Ybar(m,n)+eval(Yadm2{k}(4:end));
end
end
else
for k=1:1:length(Yadm2)
if 1==strcmp(strcat(num2str(m),num2str(n)),Yadm2{k}(2:3)) || 1==strcmp(strcat(num2str(n),num2str(m)),Yadm2{k}(2:3))
Ybar(m,n)=Ybar(m,n)-eval(Yadm2{k}(4:end));
end
end
end
end
end
fprintf('\n');
Ybar;
Valora esta pregunta


0