The following error occurred converting from sym to double: Unable to convert expression into double array.
Show older comments
Buenaas, tengo este error y la verdad no he dado con la solucion:
The following error occurred converting from sym to double:
Unable to convert expression into double array.
Tengo una variable declarada con SYMS la cual es --> d2 y en el ultimo for del codigo esta se multiplica con una constante y ahi es donde aparece el error mencionado
El codigo es el siguiente:
%% INGRESO DE DATOS ---------------------------
syms d2 d3
L1=0.15; %LONGUITUD 1ER ESLABON
L4=0.05; %LONGUITUD DESFASE
a2=0.03; %LONGUITUD 3ER ESLABON
m=[0.7 0.5 0.5 0.3]; %MASA
n=4; %CANTIDAD ARTICULACIONES
I=[1 0 0; 0 1 0; 0 0 1]; %MATRIZ IDENTIDAD
P1=[0;0;-L1/2]; %DISTANCIA1 DEL ELEMENTO AL PTO DE INERCIA
P2=[a2/2;d2/2;0]; %DISTANCIA2 DEL ELEMENTO AL PTO DE INERCIA
P3=[0;0;-d3/2]; %DISTANCIA3 DEL ELEMENTO AL PTO DE INERCIA
P4=[0;0;-L4/2]; %DISTANCIA4 DEL ELEMENTO AL PTO DE INERCIA
PT1=P1.'; %DISTANCIA1 TRANSPUESTA
PT2=P2.'; %DISTANCIA2 TRANSPUESTA
PT3=P3.'; %DISTANCIA3 TRANSPUESTA
PT4=P4.'; %DISTANCIA4 TRANSPUESTA
ICG1=[0.00191 0 0; 0 0.00191 0; 0 0 0.00068]; %SEUDOINERCIA ESLABON 1
ICG2=[0.00031 0 0; 0 0.00484 0; 0 0 0.00484]; %SEUDOINERCIA ESLABON 2
ICG3=[0.00606 0 0; 0 0.00053 0; 0 0 0.00606]; %SEUDOINERCIA ESLABON 3
ICG4=[0.00022 0 0; 0 0.00022 0; 0 0 0.00014]; %SEUDOINERCIA ESLABON 4
x=[0 a2/2 0 0]; %CORDENADAS X DEL CENTRO DE MASA
y=[0 d2/2 0 0]; %CORDENADAS Y DEL CENTRO DE MASA
z=[-L1/2 0 -d3/2 -L4/2]; %CORDENADAS Z DEL CENTRO DE MASA
%% CALCULO DE LA INERCIA POR STEINER
D1=(PT1*P1*I)-(P1*PT1); %DISTANCIA1
D2=(PT1*P1*I)-(P1*PT1); %DISTANCIA2
D3=(PT1*P1*I)-(P1*PT1); %DISTANCIA3
D4=(PT1*P1*I)-(P1*PT1); %DISTANCIA4
I1=ICG1+(m(1)*D1); %INCERCIA STEINER 1
I2=ICG2+(m(2)*D2); %INCERCIA STEINER 2
I3=ICG3+(m(3)*D3); %INCERCIA STEINER 3
I4=ICG4+(m(4)*D4); %INCERCIA STEINER 4
I=I1+I2+I3+I4 %INERCIA TOTAL
%% OBJETER MATRIZ J
for k=1:n
for i=1:4
for j=1:4
if(i==1)%fila 1 de la ecuacion
if(j==1)
Jaux(:,:,i,j)= (-I(1,1)+I(2,2)+I(3,3))/2;
end
if(j==2)
Jaux(:,:,i,j)= I(2,1);
end
if(j==3)
Jaux(:,:,i,j)= I(3,1);
end
if(j==4)
Jaux(:,:,i,j)=m(k)*x(k);
end
end
if(i==2) %fila 2 de la ecuacion
if(j==1)
Jaux(:,:,i,j)= I(2,1);
end
if(j==2)
Jaux(:,:,i,j)= (I(1,1)-I(2,2)+I(3,3))/2;
end
if(j==3)
Jaux(:,:,i,j)= I(3,2);
end
if(j==4)
Jaux(:,:,i,j)= m(k)*y(k);
end
end
if(i==3)
if(j==1)
Jaux(:,:,i,j)= I(3,1);
end
if(j==2)
Jaux(:,:,i,j)= I(3,2);
end
if(j==3)
Jaux(:,:,i,j)= (I(1,1)+I(2,2)-I(3,3))/2;
end
if(j==4)
Jaux(:,:,i,j)= m(k)*z(k);
end
end
if(i==4)
if(j==1)
Jaux(:,:,i,j)= m(k)*x(k);
end
if(j==2)
Jaux(:,:,i,j)= m(k)*y(k);
end
if(j==3)
Jaux(:,:,i,j)= m(k)*z(k);
end
if(j==4)
Jaux(:,:,i,j)= m(k); %me guarda ecuacion por ecuacion
end
end
end
end
J(:,:,k)=Jaux; %me guarda todas las posiciones matriz TOTAL
end
Answers (0)
Categories
Find more on Solar Power in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!