【问题标题】:Matlab coordinate system different from our usual oneMatlab坐标系不同于我们通常的坐标系
【发布时间】:2013-03-24 08:30:23
【问题描述】:

我注意到在 Matlab 中,坐标系有点不同,但我不能确定我的观察是否正确。当我尝试进行一些简单的图像处理时,我注意到 X 轴和 Y 轴是相反的:

Matlab 中的垂直轴是它的 X 轴,而水平轴是它的 Y 轴。我在尝试使用Im(XX:XX, YY:YY) 裁剪图像时注意到了这一点,结果发现YY:YY 部分实际上代表水平长度而不是垂直长度。

那么,Matlab 中的坐标是否真的会将我们通常的 X 轴切换到它的 Y 轴,并将我们通常的 Y 轴切换到它的 X 轴?

【问题讨论】:

    标签: matlab coordinate-systems


    【解决方案1】:

    你要注意坐标系矩阵索引的区别。当您访问矩阵中的元素时(例如在Im( a:b, c:d ) 中),您必须提供 的索引:Im( from_row : to_row, from_col : to_col )
    现在可能有点混乱,因为行在 Y 方向,列在 X 方向。

    【讨论】:

    • 所以在Matlab中,(X=5, Y=10)的一个点还是(X=5, Y=10)。坐标系没有变化。只是定义矩阵索引时读取的方式不同,我理解正确吗?
    • @Carven 当你绘制一些东西时,你使用它的笛卡尔坐标 (x,y) 来引用一个点。但是,当您访问一个矩阵条目时,您可以使用它的 (row,column) 值来访问它。
    【解决方案2】:

    Matlab 位于名为 Row-major order 的东西中。

    按照数学标准,先说行,然后说列。

    我个人从row-dot-column的点积公式中记住了这一点。

    【讨论】:

    • 哦..所以Matlab的坐标实际上没有区别。所以当我在 Matlab 中谈到(X=5, Y=10) 时,我不必说(X=10, Y=5),对吧?我只是将其定义为通常的标准坐标。它唯一具有这种行主要顺序的事情是当我定义要裁剪的像素时。对吗?
    • 值得一提的是,虽然您以行优先顺序索引数组,但 MATLAB 实际上以列优先顺序存储数据。
    • @wakjah 当然,但 Matlab 有一个 JIT,所以它的作用永远不清楚。我曾经有一个矩阵并将其转置并注意到相同的运行时间,这暗示我它选择了存储数据的最佳方式。
    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    相关资源
    最近更新 更多