查看: 910|回复: 0|关注: 0

[未答复] 无法从sym转换为logical

[复制链接]

入门

67 麦片

财富积分


50500


49

主题

121

帖子

0

最佳答案
发表于 2018-3-26 11:00:16 | 显示全部楼层 |阅读模式
程序如下:
%------------------找到所有网格点的坐标
clear all;
clc;
mx=5;
my=5;
Lx=250;
Ly=250;
for i=1:Lx/mx+1;
    for j=1:Ly/my+1;
    x2(i,j)=(i-1)*mx-Lx/2;
    y2(i,j)=(j-1)*my-Ly/2;
    end
end
z=20*ones(length(x2),length(y2));
%---------------------------------------------------
fai=10/180*pi;%刀具斜角
r=20;%刀具半径,切深设成20μm
Rw=150;%刀位点初始半径
Ro=Rw+r;%刀具轮廓外沿初始点
Ri=Rw-r;%刀具轮廓内沿初始点
Sf=36;%进给率36μm/rev
N=Rw/Sf;%N=5刀具共循环5圈
Nt=36;%每圈离散成36个刀位点;
dettheta=10/180*pi;%单位转角
w=600/60*2*pi;%转速600rpm,并化成秒。w表示一秒走了多少个角度
fsp=w/(2*pi);%theta=2*pi*fsp*t
i=1;%作循环用,无实义
d=[];
e=[];
syms n;
for m=1:7;
    rou=Rw-Sf*m*dettheta/(2*pi);%刀位点
    a1=rou.*cos(m*dettheta)-r*cos(fai+m*dettheta);%内沿所有x坐标
    b1=rou.*sin(m*dettheta)-r*sin(fai+m*dettheta);%内沿所有y坐标
    a2=rou.*cos(m*dettheta)+r*cos(fai+m*dettheta);%外沿所有x坐标
    b2=rou.*sin(m*dettheta)+r*sin(fai+m*dettheta);%外沿所有y坐标
    a3=(Rw-Sf*(m+1)*dettheta/(2*pi)).*cos((m+1)*dettheta)-r*cos(fai+(m+1)*dettheta);%内沿所有x坐标
    b3=(Rw-Sf*(m+1)*dettheta/(2*pi)).*sin((m+1)*dettheta)-r*sin(fai+(m+1)*dettheta);%内沿所有y坐标
    a4=(Rw-Sf*(m+1)*dettheta/(2*pi)).*cos((m+1)*dettheta)+r*cos(fai+(m+1)*dettheta);%外沿所有x坐标
    b4=(Rw-Sf*(m+1)*dettheta/(2*pi)).*sin((m+1)*dettheta)+r*sin(fai+(m+1)*dettheta);%外沿所有y坐标
%     a=rou.*cos(m*dettheta);
%     b=rou.*sin(m*dettheta);
%     plot(a2,b2,'r*',a,b,'r+')
%     plot(a4,b4,'y*')
%     hold on
    av=[a1 a2 a4 a3 a1];
    bv=[b1 b2 b4 b3 b1];
    in=inpolygon(x2,y2,av,bv);
     plot(av,bv,x2(in),y2(in),'r+');
     hold on

%      plot(a1,b1,'r*')
%     hold on
%  plot(a2,b2,'r*')
%     hold on
%  plot(a3,b3,'r*')
%     hold on
%  plot(a4,b4,'r*')
%     hold on



    [k l]=find(in);%储存扫描到的坐标点
    if ~isempty(k) && ~isempty(l)
    for i=1:1;
%         if (x2(k(i),l(i))==a1)
%     v(i)=m;
%         else if (x2(k(i),l(i))==a3)
%     v(i)=m+1;
%             else if (x2(k(i),l(i))~=a1 &&x2(k(i),l(i))~=a3 )
    xin=(Rw-Sf*n*dettheta/(2*pi)).*cos(n*dettheta)-r*cos(fai+n*dettheta);
    yin=(Rw-Sf*n*dettheta/(2*pi)).*sin(n*dettheta)-r*sin(fai+n*dettheta);
    xout=(Rw-Sf*n*dettheta/(2*pi)).*cos(n*dettheta)+r*cos(fai+n*dettheta);
    yout=(Rw-Sf*n*dettheta/(2*pi)).*sin(n*dettheta)+r*sin(fai+n*dettheta);
    assume(n>m &&n<m+1)
    f1=abs((yout-yin)/(xout-xin))-abs((y2(k(i),l(i))-yin)/(x2(k(i),l(i))-xin));
    [v(i)]=solve(f1);
    w(i)=vpa(v(i),25);
                end
            end
         %end

end

这里已经给出了n的范围,为什么还出现这种错误,无法从sym转换为logical
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表