2013-05-29 86 views
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 

回答

1

您不在正確的目錄中,或者您的路徑設置不正確。您正在運行內置的rotate函數,該函數與您給出的參數有關。

如果您輸入edit rotate.m,您會注意到該功能不是您的。

正確設置您的路徑,和/或重命名您的功能。

相關問題