Tamaño de matriz
Publicado por Oscar Rodriguez (6 intervenciones) el 07/02/2013 16:51:53
Buen día:
Tengo el siguiente inconveniente: Desde un archivo .m principal se le solicita al usuario ingresar el valor VM. Este valor VM se envia a un archivo function llamado "parametrosVM". De este ultimo se obtienen dos matrices "CC6 y BB6". Estas dos matrices son enviadas a otro archivo fuction llamado "VMdisminuyebajo2", este archivo constituye una funcion de pertenencia. El problema que tengo es que al ejectutar el programa me sale el siguiente error:
Attempted to access BB6(1,4); index out of bounds because size(BB6)=[6,3].
A continuacion presento los archivos correspondientes.
Archivo principal
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
VM=input ('ingrese el valor de Volumen de material inyectado'); %
[CC6,BB6]=parametrosVM(VM); %
VMdisminuyebajo2(BB6,CC6); %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Primera funcion
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [DD6,AA6]=parametrosVM(ASG) %
%
GX1=ASG; GX2=(GX1*23.75)/25; GX3=(GX2*22.5)/23.75; %
GX4=(GX3*21.25)/22.5; GX5=(GX4*20)/21.25; GX6=(GX5*18.75)/20; %
GX7=(GX6*17.5)/18.75; GX8=(GX7*16.25)/17.5; GX9=(GX8*15)/16.25; %
GXa=[GX9 GX8 GX7 GX6 GX5 GX4 GX3 GX2 GX1]; %
% Apartir de este punto por minimos cuadrados se halla la ecuacion de la
% grafica.
Y=[1 0.875 0.75 0.625 0.5 0.375 0.25 0.125 0];
m=2;
a=0;
n=9;
for i=1:n
a=a+GXa(1,i)*Y(1,i);
end
aa=0;
for i=1:n
aa=aa+GXa(1,i)*GXa(1,i)*Y(1,i);
end
b=0;
for i=1:n
b=b+GXa(1,i)*GXa(1,i);
end
bb=0;
for i=1:n
bb=bb+GXa(1,i)*GXa(1,i)*GXa(1,i);
end
bbb=0;
for i=1:n
bbb=bbb+GXa(1,i)*GXa(1,i)*GXa(1,i)*GXa(1,i);
end
c=0;
for i=1:n
c=c+GXa(1,i);
end
e=0;
for i=1:n
e=e+Y(1,i);
end
d=0;
d=c/n;
f=0;
f=e/n;
aaa=[n c b e;c b bb a;b bb bbb aa];
cc=4;
ff=3;
for k=1:cc-1
aaa(k,:)=aaa(k,:)/aaa(k,k);
for j=k+1:ff
aaa(j,:)=aaa(j,:)-aaa(k,:)*aaa(j,k);
j=j+1;
end
k=k+1;
end
for k=ff:-1:2
for j=k-1:-1:1
aaa(j,:)=aaa(j,:)-aaa(k,:)*aaa(j,k);
j=j-1;
end
k=k-1;
end
% fprintf('\n\nEcuacion para PIdisminuyebajo2 \n\n');
% fprintf(' GY1 = %d*X^2+ %d*X + %d',aaa(3,4),aaa(2,4),aaa(1,4));
for i=1:n
GY1(1,i)=aaa(3,4)*GXa(1,i)*GXa(1,i)+aaa(2,4)*GXa(1,i)+aaa(1,4);
end
%global n11 n12 n13
Gn11= aaa(3,4);
Gn12= aaa(2,4);
Gn13= aaa(1,4);
%
DD6 = [Gn11 Gn12 Gn13]; %
AA6=[GX9 GX8 GX7 GX6 GX5 GX4 GX3 GX2 GX1]; %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Segunda funcion
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y = VMdisminuyebajo2(x,BB6,CC6)
for i=1:length (x)
if x(i)<(BB6(1,1));
y(i)=0;
elseif x(i)<=(BB6(1,1));
y(i)=1;
elseif x(i)<(BB6(1,2));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,3));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,4));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,5));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,6));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,7));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,8));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,9));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)>(BB6(1,9));
y(i)=0;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Gracias por su ayuda.
Tengo el siguiente inconveniente: Desde un archivo .m principal se le solicita al usuario ingresar el valor VM. Este valor VM se envia a un archivo function llamado "parametrosVM". De este ultimo se obtienen dos matrices "CC6 y BB6". Estas dos matrices son enviadas a otro archivo fuction llamado "VMdisminuyebajo2", este archivo constituye una funcion de pertenencia. El problema que tengo es que al ejectutar el programa me sale el siguiente error:
Attempted to access BB6(1,4); index out of bounds because size(BB6)=[6,3].
A continuacion presento los archivos correspondientes.
Archivo principal
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
VM=input ('ingrese el valor de Volumen de material inyectado'); %
[CC6,BB6]=parametrosVM(VM); %
VMdisminuyebajo2(BB6,CC6); %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Primera funcion
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [DD6,AA6]=parametrosVM(ASG) %
%
GX1=ASG; GX2=(GX1*23.75)/25; GX3=(GX2*22.5)/23.75; %
GX4=(GX3*21.25)/22.5; GX5=(GX4*20)/21.25; GX6=(GX5*18.75)/20; %
GX7=(GX6*17.5)/18.75; GX8=(GX7*16.25)/17.5; GX9=(GX8*15)/16.25; %
GXa=[GX9 GX8 GX7 GX6 GX5 GX4 GX3 GX2 GX1]; %
% Apartir de este punto por minimos cuadrados se halla la ecuacion de la
% grafica.
Y=[1 0.875 0.75 0.625 0.5 0.375 0.25 0.125 0];
m=2;
a=0;
n=9;
for i=1:n
a=a+GXa(1,i)*Y(1,i);
end
aa=0;
for i=1:n
aa=aa+GXa(1,i)*GXa(1,i)*Y(1,i);
end
b=0;
for i=1:n
b=b+GXa(1,i)*GXa(1,i);
end
bb=0;
for i=1:n
bb=bb+GXa(1,i)*GXa(1,i)*GXa(1,i);
end
bbb=0;
for i=1:n
bbb=bbb+GXa(1,i)*GXa(1,i)*GXa(1,i)*GXa(1,i);
end
c=0;
for i=1:n
c=c+GXa(1,i);
end
e=0;
for i=1:n
e=e+Y(1,i);
end
d=0;
d=c/n;
f=0;
f=e/n;
aaa=[n c b e;c b bb a;b bb bbb aa];
cc=4;
ff=3;
for k=1:cc-1
aaa(k,:)=aaa(k,:)/aaa(k,k);
for j=k+1:ff
aaa(j,:)=aaa(j,:)-aaa(k,:)*aaa(j,k);
j=j+1;
end
k=k+1;
end
for k=ff:-1:2
for j=k-1:-1:1
aaa(j,:)=aaa(j,:)-aaa(k,:)*aaa(j,k);
j=j-1;
end
k=k-1;
end
% fprintf('\n\nEcuacion para PIdisminuyebajo2 \n\n');
% fprintf(' GY1 = %d*X^2+ %d*X + %d',aaa(3,4),aaa(2,4),aaa(1,4));
for i=1:n
GY1(1,i)=aaa(3,4)*GXa(1,i)*GXa(1,i)+aaa(2,4)*GXa(1,i)+aaa(1,4);
end
%global n11 n12 n13
Gn11= aaa(3,4);
Gn12= aaa(2,4);
Gn13= aaa(1,4);
%
DD6 = [Gn11 Gn12 Gn13]; %
AA6=[GX9 GX8 GX7 GX6 GX5 GX4 GX3 GX2 GX1]; %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Segunda funcion
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y = VMdisminuyebajo2(x,BB6,CC6)
for i=1:length (x)
if x(i)<(BB6(1,1));
y(i)=0;
elseif x(i)<=(BB6(1,1));
y(i)=1;
elseif x(i)<(BB6(1,2));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,3));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,4));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,5));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,6));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,7));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,8));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)<(BB6(1,9));
x1 = x(i);
y(i)= (CC6(3,1)*x1^2+CC6(3,2)*x1+CC6(3,3));
elseif x(i)>(BB6(1,9));
y(i)=0;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Gracias por su ayuda.
Valora esta pregunta


0