Error: Subscripted assignment dimension mismatch. No se nada de matlab
Publicado por Christian Pérez (1 intervención) el 27/09/2014 02:06:54
Buenas tardes,
Me pasaron estos 3 archivos de matlab (Red.m, Pasos.m y LyC.m) y me dicen que no los saben usar.. intenté hacerlo correr pero la verdad no se nada sobre Matlab y me manda este error:
ans =
0 1
C =
0.5000
Subscripted assignment dimension mismatch.
Error in LyC (line 7)
L(i,:)=Pasos(p);
Me dicen que se debe ejecutar el archivo LyC.m así: LyC(40,5,1000)
Si alguien me puede ayudar sobre como corregirlo se los agradecería mucho. Ando algo apurado con esto.
Los archivos son estos:
**************************************************
Red.m
**************************************************
function p=Red(k)
p=zeros(200,200);
for i=1:198
% p(i,i)=1;
p(i,i+1)=1; p(i+1,i)=1;
p(i,i+2)=1; p(i+2,i)=1;
end;
p(199,200)=1; p(200,199)=1;
p(199,1)=1;p(1,199)=1;
p(200,1)=1;p(1,200)=1;
p(200,2)=1;p(2,200)=1;
r=randperm(200);
if k>0
y=r(1:k);
v=combnk(y,2);
for i=1:size(v,1)
p(v(i,1),v(i,2))=1;
p(v(i,2),v(i,1))=1;
end;
end;
***********************************************
Pasos.m
***********************************************
function dist=Pasos(p)
for i=1:200
p(i,i)=1;
end;
q(:,:,1)=p;
for x=2:51
x;
q(:,:,x)=q(:,:,x-1)*p;
end;
for i=1:199
for j=i+1:200
dist(i,j)=min(find(q(i,j,:)>0));
dist(j,i)=dist(i,j);
end;
end;
v=sum(dist,2)/199;
L=mean(v);
for i=1:200
p(i,i)=0;
end;
for i=1:200
cont=0;
y=find(p(i,:)==1);
kv=length(y);
for j=1:kv-1
for k=j+1:kv
if p(y(j),y(k))==1
cont=cont+1;
end
end;
end;
possibles=kv*(kv-1)/2;
c(i)=cont/possibles;
end;
C=mean(c)
C;
*******************************************
LyC.m
*******************************************
function W=LyC(N,integr,howmany)
k=0;
for i=1:1
[k i]
p=Red(k);
L(i,:)=Pasos(p);
end;
W(1,:)=[0 L]
for k=2:round(N/integr);
for i=1:howmany
[k i]
p=Red(k);
L(i,:)=Pasos(p);
end;
W(k,:)=[k mean(L)]
end;
plot(W(:,[2 3]))
Me pasaron estos 3 archivos de matlab (Red.m, Pasos.m y LyC.m) y me dicen que no los saben usar.. intenté hacerlo correr pero la verdad no se nada sobre Matlab y me manda este error:
ans =
0 1
C =
0.5000
Subscripted assignment dimension mismatch.
Error in LyC (line 7)
L(i,:)=Pasos(p);
Me dicen que se debe ejecutar el archivo LyC.m así: LyC(40,5,1000)
Si alguien me puede ayudar sobre como corregirlo se los agradecería mucho. Ando algo apurado con esto.
Los archivos son estos:
**************************************************
Red.m
**************************************************
function p=Red(k)
p=zeros(200,200);
for i=1:198
% p(i,i)=1;
p(i,i+1)=1; p(i+1,i)=1;
p(i,i+2)=1; p(i+2,i)=1;
end;
p(199,200)=1; p(200,199)=1;
p(199,1)=1;p(1,199)=1;
p(200,1)=1;p(1,200)=1;
p(200,2)=1;p(2,200)=1;
r=randperm(200);
if k>0
y=r(1:k);
v=combnk(y,2);
for i=1:size(v,1)
p(v(i,1),v(i,2))=1;
p(v(i,2),v(i,1))=1;
end;
end;
***********************************************
Pasos.m
***********************************************
function dist=Pasos(p)
for i=1:200
p(i,i)=1;
end;
q(:,:,1)=p;
for x=2:51
x;
q(:,:,x)=q(:,:,x-1)*p;
end;
for i=1:199
for j=i+1:200
dist(i,j)=min(find(q(i,j,:)>0));
dist(j,i)=dist(i,j);
end;
end;
v=sum(dist,2)/199;
L=mean(v);
for i=1:200
p(i,i)=0;
end;
for i=1:200
cont=0;
y=find(p(i,:)==1);
kv=length(y);
for j=1:kv-1
for k=j+1:kv
if p(y(j),y(k))==1
cont=cont+1;
end
end;
end;
possibles=kv*(kv-1)/2;
c(i)=cont/possibles;
end;
C=mean(c)
C;
*******************************************
LyC.m
*******************************************
function W=LyC(N,integr,howmany)
k=0;
for i=1:1
[k i]
p=Red(k);
L(i,:)=Pasos(p);
end;
W(1,:)=[0 L]
for k=2:round(N/integr);
for i=1:howmany
[k i]
p=Red(k);
L(i,:)=Pasos(p);
end;
W(k,:)=[k mean(L)]
end;
plot(W(:,[2 3]))
Valora esta pregunta


0