用matlab理解任务中的语法

时间:2017-12-16 10:39:53

标签: arrays matlab

可以帮助理解MAtlab:

k=2
n = (0:-1:-4)+k

结果; 2 1 0 -1 -2

它是如何工作的?

3 个答案:

答案 0 :(得分:1)

您正在同时处理colon operator和向量化的和。让我们将问题分解为更小的独立问题:

  1. 在Matlab中,如果在标量值与矩阵之间加或减,则以vectorized方式对矩阵的所有元素执行算术运算。例如:

    A = [1 2; 3 4]; % 2-by-2 matrix

    S1 = A + 2 % output: S1 = [3 4; 5 6]

    B = [1 2 3 4] % 1-by-5 matrix, also called column vector

    S2 = B - 5 % output: S2 = [3 4 5 6]

  2. Matlab中的column operator可用于许多情况:索引,迭代和矢量创建。在你的情况下,它的目的是第三个,它的语法是START(:STEP):END。如果未指定,默认STEP1。永远不会超出STARTEND参数。例如:

    A = 1:5 % output: A = [1 2 3 4 5]

    B = -2.5:2.5:6 % output: B = [-2.5 0 2.5 5]

    C = 1:-1:-5 % output: C = [1 0 -1 -2 -3 -4 -5]

    D = -4:-2:0 % output: D = []

  3. 在所有编程语言中,定义了运算符优先级标准,以便使用多个运算符的单行计算被雾化为较小的计算,这些计算遵循给定的优先级,除非使用括号来重新定义默认标准。 ..就像常见的数学一样。实施例

    A = 2 * 5 + 3 % output: A = 13

    B = 2 * (5 + 3) % output: B = 16

  4. 让我们把所有这些放在一起为你提供一个解释:

    n = (0:-1:-4) + k
    % vector creation has parentheses, so it's executed first
    % then, the addition is executed on the result of the first operation
    

    让我们将计算细分为中间步骤:

    n_1 = 0:-1:-4 % output: n_1 = [0 -1 -2 -3 -4]
    n_2 = n_1 + k % output: n_2 = [2  1  0 -1 -2]
    n = n_2
    

    想看看没有括号的情况会发生什么?

    n = 0:-1:-4+k % output: n = [0 -1 -2]
    

    为什么呢?因为加法优先于冒号运算符。这就像编写n = 0:-1:(-4+k)并将k添加到冒号运算符的END参数。让我们将计算细分为中间步骤:

    n_1 = -4 + k % output: n_1 = -2
    n_2 = 0:-1:n_1 % output: n_2 = [0 -1 -2]
    n = n_2
    

答案 1 :(得分:0)

基本的Matlab语法,您正在处理范围运算符。有两种模式:

[start]:[end]

[start]:[step]:[end]

这样的模式导致数组/向量/" 1D矩阵"。

在您的示例中,您将首先获得一个向量,逐步执行数字0到-4(步骤== -1)。然后,您将k == 2添加到此向量中的所有数字。

octave:1> k = 2
k =  2
octave:2> n = (0:-1:-4)+k
n =

   2   1   0  -1  -2

octave:3> 0:-1:-4
ans =

   0  -1  -2  -3  -4

答案 2 :(得分:0)

parenthesizes表达式确定一个数组。第一个数字是第一个元素,第二个是步骤,最后一个是最后一个元素。所以括号返回0 -1 -2 -3 -4。接下来,我们将k=2添加到导致2 1 0 -1 -2

的每个元素