a=magic(5)
k=a,3
当我打印k
时,它只显示a
。
m=size(a,3)
n=size(a,6)
当我打印m
和n
时,它们会打印不同的值。
有人请解释一下这个功能是什么吗?
答案 0 :(得分:3)
On Octave 4.2.1
k=a,3
将矩阵a
分配给变量k
,然后,作为第二条指令,在CommandWindow上打印值3
。
,
(逗号)用于在同一行上有两条指令。
替代方案可能是将,
替换为;
,这会抑制分配k=a
的CommandWindow上的输出
参与
m=size(a,3)
n=size(a,6)
对size
的调用的第二个参数指定了你想知道其大小的矩阵(第一个参数)的dimension
。
a
是一个大小为(5 x 5)
的双“维”矩阵,而指令size(a,3)
则查找a
的第三维尺寸。
以类似的方式,size(a,6)
查找a
第六维的大小。在这种情况下,a
被视为(5 x 5 x 1)
和(5 x 5 x 1 x 1 x 1 x 1)
返回值,为1
这是CommandWondow中的输出:
>> a=magic(5)
a =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> k=a,3
k =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
ans = 3
>> m=size(a,3)
m = 1
>> n=size(a,6)
n = 1
希望这有帮助,
Qapla'
答案 1 :(得分:2)
在matlab / octave中,有三种终止表达式的方法(例如1+2
):
;
,
使用时的第一个(即分号)评估表达式,但抑制其输出。另外两个(即逗号和换行符)都评估语句和还显示其结果。
为什么同时使用逗号和换行符?因为,使用逗号,您可以在同一行上评估多个表达式(并且所有表达式都显示其结果)。
注意:鉴于大多数人在不同的行中编写表达式,逗号往往不会被广泛使用,因此不太为人所知。
示例:
octave:1> 1+2, 3+4
ans = 3
ans = 7
octave:2> 1+2; 3+4;
octave:3> 1+2; 3+4
ans = 7
octave:4> 1+2, 3+4;
ans = 3
octave:5> for i = 1:3; i; end % output in each iteration is suppressed
octave:6> for i = 1:3; i, end % whereas with a comma, output is not suppressed
i = 1
i = 2
i = 3
因此你的陈述:
a = magic(5)
k = a, 3
基本上等同于
a = magic(5) % newline used: display value of a after assignment
k = a, % comma used, assign value of a to k, then display k
3 % newline used: displays the value '3' after pressing enter
此外,size
功能并不能完成您的想法。 size(a,3)
返回a
rd维度中数组3
的大小。