GPC:使用GPC计算intersection容易出现的问题

     在使用GPC计算多边形的交的时候,出现问题

     //1.2. 另一种方法,判断新的多边形是否和老多边形相交
     Poly cross = (PolyDefault) Clip.intersection( filed, polyNig );   

     若filed 为两个分离的多边形,则出现计算问题:

     catch (Exception exception) {

                exception.printStackTrace();
            }

     不知道如何解决!!!


后记:

   没办法,只能修改掉,使用遍历方式

  // 对一个复合多边形判断交
    public static Poly intersection(Poly poly, Poly p2) {
        Poly p0 = new PolyDefault();
        List<Poly> p1 = new ArrayList<>();
        int num = poly.getNumInnerPoly();
        if (num > 1) {
            for (int i = 0; i < num; ++i) {
                Poly psin = (PolyDefault) poly.getInnerPoly(i);
                p1.add(psin);
            }
            p0 = intersection(p1, p2);
        } else {
            p0 = (PolyDefault) Clip.intersection(poly, p2);
        }
        return p0;
    }

转载于:https://www.cnblogs.com/wishchin/p/9199828.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
广义预测控制(GPC)是一种反馈控制算法,它利用过去的控制数据来预测未来的输出,并根据这个预测来实时调整控制输入。在MATLAB中,可以使用控制系统工具箱中的GPC函数来实现GPC控制。以下是使用MATLAB实现GPC控制的步骤: 1. 定义控制系统模型:使用MATLAB中的tf或ss函数来定义系统的传递函数或状态空间模型。 2. 定义GPC控制器:使用MATLAB中的gpc函数来创建GPC控制器对象。此函数需要指定GPC控制器的参数,例如控制时间步长、预测时间步长、控制器阶数等。 3. 设计GPC控制器:使用MATLAB中的design函数来设计GPC控制器。此函数需要指定所需的控制器性能要求,例如控制器的稳态误差和性能指标。 4. 仿真GPC控制器:使用MATLAB中的sim函数来模拟GPC控制器的性能。此函数需要指定模拟时间范围、初始条件和控制输入。 5. 评估GPC控制器性能:使用MATLAB中的step函数来计算GPC控制器的性能指标,例如稳态误差和响应时间。 下面是一个示例MATLAB代码,展示如何使用GPC进行控制: %% 定义控制系统模型 G = tf([1],[1 -1.5 0.7],1); %% 定义GPC控制器 Ts = 0.1; % 控制时间步长 N = 5; % 预测时间步长 M = 2; % 控制器阶数 gpc_obj = gpc(G,Ts,N,M); %% 设计GPC控制器 p = [1 0]; % 希望输出的理想响应为一个阶跃函数 q = 1; % 控制器性能指标为输出误差 gpc_obj = design(gpc_obj,p,q); %% 仿真GPC控制器 t = 0:Ts:10; % 模拟时间范围 u = ones(size(t)); % 初始控制输入为1 [y,t] = sim(gpc_obj,G,u,t); % 计算GPC控制器的输出 %% 评估GPC控制器性能 % 计算稳态误差 steady_state_error = abs(p(end) - y(end)); % 计算响应时间 rise_time = t(find(y>=p(end)*0.9,1)) - t(find(y>=p(end)*0.1,1)); 以上代码演示了如何使用MATLAB中的GPC函数进行控制。通过定义控制系统模型、设计GPC控制器并仿真模拟,可以评估GPC控制器的性能指标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值