Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-07-22
帖子: 3
声望力: 0 ![]() |
![]()
我做了一个程序,最后要求误差的分布,整个过程只有实数,应该没有复数产生,但运行
H(r)=norm(N(r,: ))*norm(NL); Z(r)=abs(dot(N(r,: ),NL))/(H(r)); M(r)=acos(Z(r))*180/pi; M(r)有时会产生复数 上段代码,我的意思理论上是向量N和向量NL点乘,然后除以两向量的模,再反cos就是两向量的夹角了,但为什么abs(dot(N,NL))/(norm(N)*norm(NL))会产生超出[-1,1]的数呢?我应该怎么改呀?谢谢 下面是程序: %用蒙特卡洛方法测定调平装置的误差分布 %以平面2x+3y+6z-8=0为例,测定平面上点(c1,c2,c3)=(1,2,0)处的法向误差分布 H=[]; Z=[]; N=[];%计算法向量 M=[];%误差值 angle=20*pi/180;%传感头发射的激光与主轴的夹角 NL=[2,3,6];%平面2x+3y+6z+8=0的法向量 point=0;%计数点 s=unifrnd(-30*cos(angle),0,1,200); %产生服从均匀分布U(-30cos20,0)的随机数200个 A1=[1/tan(angle),0,1; 2,3,6; 0,1,0]; A2=[-2*3^(1/2),-2,0; 0,4/tan(angle),2*3^(1/2); 2,3,6]; A3=[2*3^(1/2),-2,0; 0,4/tan(angle),-2*3^(1/2); 2,3,6]; %传感器1,2,3发射激光的光线方程与平面方程的联立的系数矩阵 for t=1:200 b1=[s(t)+1/tan(angle);8;2]; b2=[-2*3^(1/2)-4;8/tan(angle)+2*3^(1/2)*s(t);8]; b3=[2*3^(1/2)-4;8/tan(angle)-2*3^(1/2)*s(t);8]; x1=A1\b1; x2=A2\b2; x3=A3\b3; %三束激光线与平面的焦点坐标 if (norm(x1'-[1,2,s(t)])<=30)&(norm(x2'-[1,2,s(t)])<=30)&(norm(x3'-[1,2,s(t)])<=30) %判断是否超出测量范围 point=point+1; h1=30-norm(x1'-[1,2,s(t)]); h2=30-norm(x2'-[1,2,s(t)]); h3=30-norm(x3'-[1,2,s(t)]); L2=65; T=95*sin(angle); N(point, ![]() %计算近似向量 if point==100 break; end end end for r=1:100 H(r)=norm(N(r,: ))*norm(NL); Z(r)=abs(dot(N(r,: ),NL))/(H(r)); M(r)=acos(Z(r))*180/pi;%本次测量的误差 end [h,p,j,cv]=jbtest(M)%判断是否为正态分布 [n,xout]=hist(M,25) bar(xout,n)%绘制频率直方图 E=mean(M)%计算样本均值 sigma=std(M)%计算标准差 |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-07-22
帖子: 3
声望力: 0 ![]() |
![]()
上文中出现的
![]() |
![]() |
![]() |