The following error occurred converting from sym to double: Unable to convert expression into double array.

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

Asked:

on 14 Jun 2019

Edited:

on 14 Jun 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!