You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在cornerPoints数组的Location属性中索引单个坐标列?

解决cornerPoints对象的坐标索引问题

我来帮你搞定这个索引问题!你遇到的情况是因为cornerPoints是MATLAB的对象数组,每个对象的Location属性本身是一个数值数组,所以需要分两步索引:先定位到具体的cornerPoint对象,再对它的Location属性数组进行列索引。

单个坐标点的x/y索引方法

要提取单个点的x或y坐标,你需要在获取Location属性后,再加一层数组索引:

  • 获取第一个角点的x坐标(第一列):
    sectionCorner(1).Location(1)
    % 或者用列索引的方式:sectionCorner(1).Location(:,1)
    
    执行后会返回:4.3865
  • 获取第一个角点的y坐标(第二列):
    sectionCorner(1).Location(2)
    % 或者:sectionCorner(1).Location(:,2)
    
    执行后会返回:4.0165

为什么sectionCorner(1,1).Location会报错?

sectionCorner是一个4×1的cornerPoints对象数组,每个元素对应一个角点对象。这里只有一维索引(角点的序号),不存在第二维,所以(1,1)这种二维索引是无效的,MATLAB会提示"Invalid indexing operation."

批量获取所有点的x/y坐标

如果需要一次性提取所有角点的x或y坐标,可以用以下方法:

  • 所有角点的x坐标:
    allX = [sectionCorner.Location(:,1)];
    % 或者用arrayfun:allX = arrayfun(@(p) p.Location(1), sectionCorner);
    
    结果是一个4×1的数组:[4.3865; 4.3976; 95.3194; 95.3040]
  • 所有角点的y坐标:
    allY = [sectionCorner.Location(:,2)];
    % 或者:allY = arrayfun(@(p) p.Location(2), sectionCorner);
    
    结果是一个4×1的数组:[4.0165; 94.9175; 94.9566; 4.0371]

内容的提问来源于stack exchange,提问作者Cion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:25:51