0
我有一個非常奇怪的問題,我需要交上一篇matlab文章。 我寫了一個旋轉3d矢量的函數。我稱之爲旋轉。「未定義的函數或變量」u「。」 MATLAB文章
rotate得到一個向量v,一個角度theta,角度alpha和一個標量r。 該函數將旋轉增加矢量用Z軸旋轉theta創建的角度,旋轉它圍繞Z軸(增加X軸創建的角度)alpha,然後用r延長。
例如:
v=(0,0,1)
theta= pi/2
alpha=0
r=1
rotate(v,theta,alpha,r) will return (0,1,0).
我的問題是,每當我調用函數的旋轉,我得到一個錯誤說: ???未定義的函數或變量「u」。
錯誤==>旋轉在51 x = u(1);
而在我寫的整個代碼中,沒有稱爲「u」的函數或變量。
這是我的代碼。基本上,我將向量轉換爲球形座標,然後添加theta和alpha。我認爲它不應該工作?
function [output] = rotate(v,theta,alpha,r)
if(isnumeric(v))
[i,j]=size(v);
if(i>j)
for i=1:3
sum = sum+pow(v(i,1),2);
end
sum=sqrt(sum);
output(1,1)=sum*r;
output(2,1)=acos(v(3,1)/sum)+theta;
output(3,1)=atan(v(2,1)/v(1,1))+alpha;
if((output(2,1)>pi)||(output(2,1)<-1*pi))
prompt={'Invalid values for second cordinate, more than pi or less than -pi'};
return
end
if((output(3,1)>2*pi)||(output(3,1)<-2*pi))
prompt={'Invalid values for third cordinate, more than 2 pi or less than -2pi'};
return
end
r=output(1,1);
angle1=output(2,1);
angle2=output(3,1);
output(1,1)=r*sin(angle1)*cos(angle2);
output(2,1)=r*sin(angle1)*sin(angle2);
output(3,1)=r*cos(angle1);
else
for j=1:3
sum=sum+pow(v(1,j),2);
end
sum=sqrt(sum);
output(1,1)=sum*r;
output(1,2)=acos(v(1,3)/sum)+theta;
output(1,3)=atan(v(1,2/v(1,1))+alpha;
if((output(1,2)>pi)||(output(1,2)<-1*pi))
prompt={'Invalid values for second cordinate, more than pi or less than -pi'};
return;
end
if((output(1,3)>2*pi)||(output(1,3)<-2*pi))
prompt={'Invalid values for third cordinate, more than 2 pi or less than -2pi'};
return
end;
r=output(1,1);
angle1=output(1,2);
angle2=output(1,3);
output(1,1)=r*sin(angle1)*cos(angle2);
output(1,2)=r*sin(angle1)*cos(angle2);
output(1,3)=r*cos(angle1);
end
else
prompt={'not numeric'};
return
end
end