这是 Octave 文档的第 6.3.1 节从单元阵列生成的逗号分隔列表中的一个示例(我通过doc
Octave 提示符上的命令浏览了它),我不太明白。
in{1} = [10, 20, 30, 40, 50, 60, 70, 80, 90];
in{2} = inf;
in{3} = "last";
in{4} = "first";
out = cell(4, 1);
[out{1:3}] = find(in{1 : 3}); % line which I do not understand
所以在本节结束时,我们in
看起来像:
in =
{
[1,1] =
10 20 30 40 50 60 70 80 90
[1,2] = Inf
[1,3] = last
[1,4] = first
}
看起来out
像:
out =
{
[1,1] =
1 1 1 1 1 1 1 1 1
[2,1] =
1 2 3 4 5 6 7 8 9
[3,1] =
10 20 30 40 50 60 70 80 90
[4,1] = [](0x0)
}
在这里,find
用 3 个输出参数调用(如果我将它们称为输出参数有误,请原谅我,我对 Octave 很陌生)[out{1:3}]
,它表示单元格数组的前 3 个空单元格out
。
当我find(in{1 : 3})
使用 3 个输出参数运行时,如下所示:
[i,j,k] = find(in{1 : 3})
我得到:
i = 1 1 1 1 1 1 1 1 1
j = 1 2 3 4 5 6 7 8 9
k = 10 20 30 40 50 60 70 80 90
哪种解释了为什么out
看起来确实如此,但是当我执行时in{1:3}
,我得到:
ans = 10 20 30 40 50 60 70 80 90
ans = Inf
ans = last
它们是元in
胞数组的第 1 到第 3 个元素。
我的问题是:为什么要find(in{1 : 3})
删除逗号分隔列表中的第二个和第三个条目in{1 : 3}
?
谢谢你。