[英]Problems with sub2ind function in Octave
我是 Octave 的新手,所以我在阅读文档时发现sub2ind
function。 我开始对其进行测试,但有时它工作起来很奇怪,或者我只是不明白它必须如何工作。
所以这就是下标必须转换为线性索引的方式。 (来自文档的示例)
[(1,1), (1,2), (1,3)] [1, 4, 7]
[(2,1), (2,2), (2,3)] ==> [2, 5, 8]
[(3,1), (3,2), (3,3)] [3, 6, 9]
这是文档中的另一个示例
s1 = [2, 2];
s2 = [1, 3];
ind = sub2ind ([3, 3], s1, s2)
⇒ ind = 2 8
因此,如果我们看第一个示例 (2, 2) == 5,但第二个示例说 [2, 2] == 2。 (1, 3) 也有不同的结果。 实际上它如第二个示例所示。
如果我尝试使用只有一对 function 它返回同一对
sub2ind([3, 3], [2, 2])
# ans = [2, 2]
在这个测试中,我看不到输入和 output 之间的任何关系
sub2ind([3, 3], [2, 2], [3, 3])
# ans = [8, 8]
Function 仅在获得 1 对或其中一对是对类型 [x, x](两个相同的值)时才以这种奇怪的(也许不是)方式工作。
但除此之外它工作正常,所以这个测试返回它应该:
sub2ind([3, 3], [2, 1], [1, 3])
# ans = [2, 7]
当使用此变体时,它也可以正常工作sub2ind (dims, i, j)
。 function 是如何工作的?
您误解了输入格式。
改变
s1 = [2, 2];
s2 = [1, 3];
ind = sub2ind ([3, 3], s1, s2)
⇒ ind = 2 8
对此:
row = [2, 2]; % x1 and x2
col = [1, 3]; % y1 and y2
ind = sub2ind ([3, 3], row, col)
⇒ ind = 2 8
您有两个输入可以转换为线性索引: [x1, y1] = [2, 1] = 2
和[x2 y2] = [2, 3] = 8
。
这个:
sub2ind([3, 3], [2, 2])
# ans = [2, 2]
似乎等同于:
sub2ind([3, 3], [2, 2], [1, 1])
即使它不在文档中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.