2017-07-19 78 views
-2
a=magic(5) 
k=a,3 

当我打印k时,它只是显示aOctave中的变量=(矩阵,标量)是什么意思?

m=size(a,3) 
n=size(a,6) 

当我打印mn,他们打印不同的值。

任何人都请解释一下这个功能是什么?

+0

它给出语法错误! – OmG

+0

@OmG它没有。这是有效的MATLAB语法,尽管完全没用......除非你是代码打高尔夫! il_raffa的答案也保存在MATLAB中。 – rayryeng

+0

@rayryeng问题的标题是Octave。并且此代码在Octave中有语法错误。 – OmG

回答

3

在八度4.2.1

k=a,3 

矩阵a分配给变量k,然后,作为一个第二指令,对打印CommandWindow值3

使用,(逗号)是为了在同一行上有两条指令。

的alterntive可以与具有抑制对分配k=a

随着respec的CommandWindow输出到

m=size(a,3) 
n=size(a,6) 

第二paramenter n中的呼叫的效果;被替换,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'

2

在matlab/octave中,有三种方法来终止ex压力(例如, 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)返回3维度中的数组a的大小。

相关问题