如何在MATLAB中设置周期值的限制?

如何在MATLAB中设置周期值的限制?,matlab,symbolic-math,Matlab,Symbolic Math,我的脚本中有一组三个方程,它们相当简单,但是它们使用了sin和cos值,因此我对它们设置了一个限制。以下是这些方程式: y1 = 23/200 - cos(q1)*((67*cos(q2 + q3))/100 - (17*sin(q2))/25 + 13/50) y2 = - sin(q1)*((67*cos(q2 + q3))/100 - (17*sin(q2))/25 + 13/50) - 47/50 y3 = 67/100 - (17*cos(q2))/25 - (67*sin(q2

我的脚本中有一组三个方程,它们相当简单,但是它们使用了sin和cos值,因此我对它们设置了一个限制。以下是这些方程式:

y1 = 23/200 - cos(q1)*((67*cos(q2 + q3))/100 - (17*sin(q2))/25 + 13/50)

y2 = - sin(q1)*((67*cos(q2 + q3))/100 - (17*sin(q2))/25 + 13/50) - 47/50

y3 = 67/100 - (17*cos(q2))/25 - (67*sin(q2 + q3))/100
显然,在使用“求解”函数之前,我尝试了“限制”来设置单个限制,如下所示:

y1 = Pax - eq1;
y2 = Pay - eq2;
y3 = Paz - eq3;

limit(y1,q1,-1);
limit(y1,q1,1);
limit(y1,q2,-1);
limit(y1,q2,1);
limit(y1,q3,-1);
limit(y1,q3,1);

limit(y2,q1,-1);
limit(y2,q1,1);
limit(y2,q2,-1);
limit(y2,q2,1);
limit(y2,q3,-1);
limit(y2,q3,1);

limit(y3,q1,-1);
limit(y3,q1,1);
limit(y3,q2,-1);
limit(y3,q2,1);
limit(y3,q3,-1);
limit(y3,q3,1);

rozw=solve(y1,y2,y3,'q1,q2,q3');
q1_1 = rozw.q1
q2_1 = rozw.q2
q3_1 = rozw.q3
我也尝试过使用“左”和“右”限制,但是,我最终得到的结果不仅是错误的值,而且是超出我限制的值


您能提出一些解决方案吗?

我推断您正在使用符号工具箱,然后您可以使用:

syms第一季度第二季度第三季度

假定([q1>=-1&q1=-1&q2=-1&q3你在哪里发现“极限”被用来给解的极限赋值?现在还不能告诉你,我想有人在Matlab论坛上建议了它-或者我可能误解了他/她的线索。难道不是
极限
只计算某个给定函数的实际极限吗研究一个函数?据我所知,你只是要求为趋向于
+1/-1
qn
计算
yn
函数的极限。这正是我试图做的——将趋向于+m/-n的qn的yn函数限制。考虑到这一点,我觉得你给出函数的实际极限可能是正确的。我不这么认为不要使用符号工具箱,你知道以其他方式设置边界的方法吗?你的陈述与你发布的代码相矛盾。
谁是q1
?q1、q2和a3是我的机器人操纵器的关节角度,如果这是你要问的话。我使用符号,但在符号工具箱之外-整个代码都是纯Matlab编辑器。你建议我试试这个工具箱吗?我以前从未使用过,编辑器很适合我的需要。你知道工具箱主要是一堆函数和专用类吗?换句话说,如果你的工作区中有符号变量,那么你就在使用符号工具箱。你可以忽略我在在编辑器中使用它之后,我得到了以下错误:“error in==>sym.sym>sym.ge at 823 notimplemented('ge')”。在符号工具箱中反复检查后,我得到了“error:非法字符'&'[line 1,col 18]”.到目前为止,你肯定已经注意到我对Matlab及其环境还相当陌生。我只是觉得不舒服-如果你身边有一些书/教程,你能给我写一些吗?
syms q1 q2 q3
assume([q1 >= -1 & q1 <= 1
        q2 >= -1 & q2 <= 1
        q3 >= -1 & q3 <= 1])