linspace генерирует линейно распределённые числа между двумя достижимыми границами

## Синтаксис

                row = linspace(x1, x2)
                row = linspace(x1, x2, n)
                Matrix = linspace(Col1, Col2)
                Matrix = linspace(Col1, Col2, n)

## Аргументы

x1, x2

  Вещественные или комплексные скаляры, или кодированные целочисленные скаляры: границы между которыми должны быть сгенерированы значения.

Col1, Col2

  Вектор-столбцы одинаковой высоты, состоящие из вещественных или комплексных чисел или кодированных целочисленных скаляров.

n

  целое количество запрошенных значений или столбцов. Значение по умолчанию: 100.

row

  вектор-строка из `n` чисел.

Matrix

  Матрица, в которой `n` столбцов чисел.

## Описание

`linspace(x1, x2)` генерирует вектор-строку из `n` равномерно распределённых значений в диапазоне точно от `x1` до `x2`.

Синтаксис `y1:y2` или `y1:step:y2` наподобие `1:0.1:%pi` делает то же самое, но фиксирует начальную границу `y1` и шаг `step`. Переменная `y2` используется в качестве границы остановки, через которую нельзя переступить. Последнее значение, которое фактически будет сгенерировано, может не достичь её. В этом случае `y2` не включено в результат.

Вместо фиксированного шага указанным значением, функция `linspace` фиксирует конечную границу `x2`, которая точно будет достигнута и вычисляет соответствующий шаг.

Если `x1` или `x2` являются комплексными числами, то `linspace(x1,x2)` интерполирует отдельно вещественную и мнимую части `x1` и `x2`.

Если указаны вектор-столбцы `Col1` и `Col2`, то функция `linspace` работает по строкам: результирующая матрица `Matrix` имеет то же количество строк и `n` столбцов, которое мы получим `Matrix(i,:) = linspace(Col1(i), Col2(i), n)`.

В случае, когда указанные границы являются кодированными целыми числами, то фактический шаг может колебаться на единицу в последовательности.

## Примеры

    linspace(1, %pi, 0)         // n = 0
    linspace(1, 2, 10)          // x2 > x1 : значения увеличиваются
    linspace(2, 1, 10)          // x2 < x1 : значения уменьшаются
    linspace(1+%i, 2-2*%i, 5)      // с комплексными числами
    linspace([1:4]', [5:8]', 10)   // со столбцами на входе

    --> linspace(1, %pi, 0)    // n = 0
     ans  =
        []

    --> linspace(1, 2, 10)    // x2 > x1 : значения увеличиваются
     ans  =
       1.   1.111   1.222   1.333   1.444   1.556   1.667   1.778   1.889   2.

    --> linspace(2, 1, 10)    // x2 &lt; x1 : значения уменьшаются
     ans  =
       2.   1.889   1.778   1.667   1.556   1.444   1.333   1.222   1.111   1.

    --> linspace(1+%i, 2-2*%i, 5)      // с комплексными числами
     ans  =
       1. +i     1.25 +0.25i   1.5 -0.5i   1.75 -1.25i   2. -2.i

    --> linspace([1:4]', [5:8]', 10)   // со столбцами на входе
     ans  =
       1.   1.444   1.889   2.333   2.778   3.222   3.667   4.111   4.556   5.
       2.   2.444   2.889   3.333   3.778   4.222   4.667   5.111   5.556   6.
       3.   3.444   3.889   4.333   4.778   5.222   5.667   6.111   6.556   7.
       4.   4.444   4.889   5.333   5.778   6.222   6.667   7.111   7.556   8.

С кодированными целыми числами: Шаг может колебаться на единицу в последовательности:

    x = linspace(int8([5;127]), int8([127;5]), 10)
    x(:,1:$-1) - x(:,2:$)

    --> x = linspace(int8([5;127]), int8([127;5]), 10)
     ans  =
        5   18   32  45  59  72  86  99  113  127
      127  114  100  87  73  60  46  33   19    5

    --> x(:,1:$-1) - x(:,2:$)
     ans  =
     -13 -14 -13 -14 -13 -14 -13 -14 -14
      13  14  13  14  13  14  13  14  14

## Смотрите также

- colon
- logspace
- grand

## История

5.4.0

- Могут быть указаны вектор-столбцы.
- Третьим входным аргументом (n) должно быть целое значение.

6.0

- linspace(a, b, n<=0) теперь возвращает [] вместо b.
- Границы теперь проверяются на значения %inf или %nan.

6.0.2 Теперь linspace() может быть надёжно использован для последовательностей кодированных целых чисел.