繁体   English   中英

八度音阶中 sub2ind function 的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM