&引用;未定义的函数或变量;u"&引用;MATLAB论文

&引用;未定义的函数或变量;u"&引用;MATLAB论文,matlab,vector,rotation,Matlab,Vector,Rotation,我有一个非常奇怪的问题,我需要交一篇matlab论文。 我写了一个函数来旋转一个3d向量。我叫它旋转 旋转获取向量v、角度θ、角度α和标量r。 该函数将旋转增加向量与Z轴的夹角θ,围绕Z轴旋转(增加向量与X轴的夹角)α,然后拉伸r 例如: v=(0,0,1) theta= pi/2 alpha=0 r=1 rotate(v,theta,alpha,r) will return (0,1,0). 我的问题是,每当我调用函数rotate时,我都会得到一个错误,错误是: ??? 未定义的函数或变量“

我有一个非常奇怪的问题,我需要交一篇matlab论文。 我写了一个函数来旋转一个3d向量。我叫它旋转

旋转获取向量v、角度θ、角度α和标量r。 该函数将旋转增加向量与Z轴的夹角θ,围绕Z轴旋转(增加向量与X轴的夹角)α,然后拉伸r

例如:

v=(0,0,1)
theta= pi/2
alpha=0
r=1
rotate(v,theta,alpha,r) will return (0,1,0).
我的问题是,每当我调用函数rotate时,我都会得到一个错误,错误是: ??? 未定义的函数或变量“u”

错误==>在51处旋转 x=u(1)

在我写的整个代码中,没有一个函数或变量叫做“u”

这是我的密码。基本上,我把向量变换成球形的堇青石,然后加上θ和α。我觉得应该行不行

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
函数[输出]=旋转(v,θ,α,r)
如果(是数字(v))
[i,j]=尺寸(v);
如果(i>j)
对于i=1:3
总和=总和+功率(v(i,1),2);
结束
总和=平方米(总和);
输出(1,1)=和*r;
输出(2,1)=acos(v(3,1)/sum)+θ;
输出(3,1)=atan(v(2,1)/v(1,1))+alpha;

如果((输出(2,1)>pi)| |(输出(2,1)2*pi)| |(输出(3,1)pi)| |(输出(1,2)2*pi)| |(输出(1,3)您的目录不正确,或者您的路径设置不正确。您正在运行内置的
rotate
函数,该函数的参数有问题

如果键入
edit rotate.m
,您将注意到该函数不是您的

正确设置路径和/或重命名函数