Matlab - Error: Subscripted assignment dimension mismatch. No se nada de matlab

   
Vista:

Error: Subscripted assignment dimension mismatch. No se nada de matlab

Publicado por Christian Pérez christianps_mx@hotmail.com (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]))
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Error: Subscripted assignment dimension mismatch. No se nada de matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 27/09/2014 17:31:54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function W=LyC(N,integr,howmany)
  if nargin<1
      N=40;
      integr=5;
      howmany=1000;
  end
 k=0;
 for i=1:1
     [k i]
     p=Red(k);
     whos p
     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]))
 
 
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;
 
 
 
 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)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>> LyC
 
ans =
 
     0     1
 
  Name        Size              Bytes  Class     Attributes
 
  p         200x200            320000  double
 
 
C =
 
    0.5000
 
Subscripted assignment dimension mismatch.
 
Error in LyC (line 12)
     L(i,:)=Pasos(p);


p es una matriz 200x200 y L(i, :) es la fila i de la matriz L, por lo tanto no puedes guardar una matriz en un vector.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
Estimado Usuario de Matlab, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar