Как задать массив с шагом в матлаб
Перейти к содержимому

Как задать массив с шагом в матлаб

  • автор:

Как задать массив в Matlab: простые и эффективные способы

Matlab – это мощная вычислительная среда, которая широко используется для работы с массивами и матрицами. Понимание основных способов задания массивов в Matlab является важным навыком, который поможет вам эффективно работать с данными и создавать сложные вычислительные модели.

Самым простым способом задания массива в Matlab является использование оператора квадратные скобки [ ]. С помощью этого оператора вы можете указать список элементов, разделенных запятыми, и создать одномерный массив. Например, вы можете создать массив из чисел от 1 до 10 следующим образом: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

Если вам нужно создать массив с шагом, вы можете использовать оператор двоеточие ( : ). Например, оператор 1:10 создаст массив из чисел от 1 до 10 с шагом 1. Вы также можете указать шаг явно, используя оператор двоеточие с шагом, например 1:2:10 создаст массив из чисел от 1 до 10 с шагом 2.

Особенно полезным является оператор zeros, который позволяет создавать массивы заданного размера, заполненные нулями. Например, оператор zeros(3, 4) создаст двумерный массив размером 3×4, заполненный нулями. А если вам нужен трехмерный массив, вы можете использовать оператор zeros(3, 4, 2), чтобы создать массив размером 3x4x2, заполненный нулями.

Задание массива в Matlab: обзор основных методов

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

1. Задание массива с помощью оператора []: данный способ является наиболее простым и удобным для использования. Для задания массива необходимо перечислить его элементы через запятую внутри квадратных скобок. Например, a = [1, 2, 3, 4, 5].

2. Задание массива с помощью оператора linspace: данный способ позволяет задать массив, содержащий равномерно расположенные элементы в заданном интервале. Оператор linspace принимает на вход три аргумента: начальное значение, конечное значение и количество элементов в массиве. Например, b = linspace(0, 1, 10).

3. Задание массива с помощью оператора colon: данный способ позволяет задать массив, содержащий элементы, образующие арифметическую прогрессию. Оператор colon принимает на вход два аргумента: начальное значение и шаг прогрессии. Например, c = 1:2:10 задаст массив [1, 3, 5, 7, 9].

4. Задание массива с помощью функции zeros: данная функция позволяет задать массив, заполненный нулями. Функция принимает на вход размеры массива в виде аргумента и возвращает массив указанного размера, заполненный нулями. Например, d = zeros(3, 3) задаст двумерный массив 3×3, заполненный нулями.

5. Задание массива с помощью функции ones: данная функция аналогична функции zeros, но задает массив, заполненный единицами. Также принимает размеры массива и возвращает массив указанного размера, заполненный единицами. Например, e = ones(2, 2) задаст двумерный массив 2×2, заполненный единицами.

Кроме перечисленных методов, в Matlab существуют и другие способы задания массивов, такие как использование функций rand, eye, diag и др. Выбор метода зависит от конкретной задачи, удобства использования и требуемой структуры массива.

Использование оператора присваивания

Для задания массива в Matlab можно использовать оператор присваивания, который позволяет присвоить значение одной или нескольким переменным. В случае задания массива, оператор присваивания используется для заполнения элементов массива определенными значениями.

Самый простой способ использования оператора присваивания для задания массива в Matlab – это создание переменной и присвоение ей значения массива. Например, чтобы создать массив из трех элементов, можно написать следующий код:

В этом случае переменной x будет присвоено значение массива [1 2 3]. Здесь пробелы между элементами массива используются для разделения значений. Массив может содержать значения любого типа данных: числа, строки, логические значения и т. д.

Если нужно создать массив, состоящий из последовательности чисел, можно воспользоваться оператором диапазона (:). Например, чтобы создать массив чисел от 1 до 5 можно написать следующий код:

В этом случае переменной y будет присвоено значение массива [1 2 3 4 5]. Оператор диапазона позволяет задавать не только возрастающие, но и убывающие последовательности чисел.

Также, с помощью оператора присваивания можно задать массив, используя функции, такие как zeros, ones или rand. Например, чтобы создать массив размером 3×3, заполненный нулями, можно написать следующий код:

В этом случае переменной z будет присвоено значение массива [0 0 0; 0 0 0; 0 0 0]. Функция zeros принимает аргументы, указывающие размеры массива.

Таким образом, использование оператора присваивания позволяет задавать массивы в Matlab различными способами – от простого присваивания значения переменной до использования функций для генерации массивов с определенными значениями.

Создание массива с помощью встроенных функций

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

Одной из наиболее распространенных функций для создания массивов в MATLAB является функция linspace. Данная функция позволяет создать массив с заданным количеством элементов, равномерно распределенных между двумя заданными значениями. Например, можно создать массив из 100 элементов, равномерно распределенных между 0 и 1:

array = linspace(0, 1, 100);

Также в MATLAB есть функция ones, которая создает массив указанного размера, все элементы которого равны 1. Например, можно создать массив размером 3×3, состоящий из единиц:

Функция zeros работает аналогичным образом, но создает массив с элементами, равными 0. Например, можно создать массив размером 4×4, состоящий из нулей:

array = zeros(4, 4);

Можно создавать массивы с помощью функции eye, которая создает единичную матрицу указанного размера. Например, можно создать 5×5 единичную матрицу:

В MATLAB также доступна функция rand, которая создает массив указанного размера, заполненный случайными числами из равномерного распределения на интервале [0, 1]. Например, можно создать массив размером 2×2 заполненный случайными числами:

Существует и много других встроенных функций для создания массивов в MATLAB. Они позволяют гибко задавать форму, размер и значения элементов массива. Благодаря этим функциям создание массивов в MATLAB становится простым и эффективным процессом.

Инициализация массива с помощью операций над другими массивами

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

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

scalar = 5;

vector = [1 2 3];

matrix = [4 5 6; 7 8 9];

new_vector = scalar * vector;

new_matrix = scalar * matrix;

Также можно использовать операции над массивами, такие как сложение, вычитание и возведение в степень. Например:

array1 = [1 2 3];

array2 = [4 5 6];

array_sum = array1 + array2;

array_diff = array1 - array2;

array_power = array1 .^ 2; % возвести каждый элемент в квадрат

Для более сложных операций также можно использовать функции, такие как sin, cos, exp и другие. Например:

array = [1 2 3];

sin_array = sin(array);

cos_array = cos(array);

exp_array = exp(array);

Также можно использовать битовые операции, такие как побитовое И, ИЛИ и др. Например:

array1 = [1 0 1];

array2 = [0 1 0];

bitwise_and = bitand(array1, array2);

bitwise_or = bitor(array1, array2);

bitwise_xor = bitxor(array1, array2);

Такие операции позволяют легко и удобно выполнять инициализацию массивов в Matlab с помощью уже существующих массивов и математических операций.

Простые способы задания массива в Matlab

В Matlab есть несколько простых и эффективных способов задания массива. Один из самых простых способов – это задать массив в виде списка значений, разделенных запятыми. Например, можно задать массив из трех элементов следующим образом:

Таким образом, массив A будет содержать значения 1, 2 и 3. Массивы в Matlab могут быть одномерными, двумерными и даже многомерными. Для задания двумерного массива можно использовать точки с запятой для разделения строк:

В результате массив B будет иметь две строки и три столбца.

Еще одним простым способом задания массива в Matlab является использование функций-генераторов, таких как linspace и logspace . Например, функция linspace позволяет создать массив с заданным числом элементов, расположенных равномерно в заданном диапазоне. Например:

C = linspace(0, 1, 5);

В результате массив C будет состоять из пяти элементов, равномерно распределенных от 0 до 1.

Также, можно использовать функцию-генератор zeros для создания массива нулей заданного размера или функцию ones для создания массива единиц. Например:

В результате массив D будет иметь размер 3×4 и будет состоять из нулей.

Заполнение массива последовательностью чисел

Заполнение массива последовательностью чисел является одним из наиболее распространенных и полезных способов инициализации массивов в Matlab. Для этого можно использовать несколько методов.

1. Задание значений вручную. Самым простым и понятным способом является задание значений элементов массива вручную. Например, для создания массива из первых десяти натуральных чисел можно использовать следующую конструкцию:

array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

2. Использование оператора “:”. Оператор “:” позволяет создавать массивы с заданным шагом. Например, чтобы создать массив из чисел от 1 до 10 с шагом 2, можно использовать следующий код:

array = 1:2:10;

Результатом выполнения этого кода будет массив [1, 3, 5, 7, 9].

3. Использование функции linspace. Функция linspace позволяет создавать массивы с заданным количеством значений между начальным и конечным значениями. Например, чтобы создать массив из 5 равномерно распределенных чисел между 0 и 1, можно использовать следующий код:

array = linspace(0, 1, 5);

Результатом выполнения этого кода будет массив [0, 0.25, 0.5, 0.75, 1].

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

Задание массива с помощью элементов с фиксированным шагом

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

Функция linspace позволяет создать массив, состоящий из заданного количества элементов с равным расстоянием между ними. Синтаксис функции выглядит следующим образом:

linspace(x1, x2, N)

где x1 и x2 – начальное и конечное значения, а N – количество элементов. Например, чтобы создать массив, в котором значения изменяются от 1 до 10 с шагом 0.5, можно использовать следующую команду:

array = linspace(1, 10, 19)

Функция colon позволяет создать массив, задав начальное, конечное значение и шаг. Синтаксис функции выглядит следующим образом:

где start – начальное значение, step – шаг, end – конечное значение. Например, чтобы создать массив, в котором значения изменяются от 0 до 10 с шагом 2, можно использовать следующую команду:

Также можно задать массив с помощью элементов, указывая их индексы в квадратных скобках. Например, чтобы создать массив, содержащий значения 1, 3, 5, 7, можно использовать следующую команду:

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

Создание массива с помощью функции ones и zeros

В языке программирования Matlab существуют удобные функции для создания массивов, например, функции ones и zeros. Функция ones позволяет создать массив заданного размера, заполненный единицами, а функция zeros – массив, заполненный нулями. Воспользоваться этими функциями очень просто и эффективно.

Для создания массива с помощью функции ones или zeros необходимо указать желаемый размер массива в виде вектора. Например, если мы хотим создать одномерный массив из 5 элементов, мы можем воспользоваться следующим кодом:

arr = ones(1, 5);

В данном примере массив arr будет иметь размерность 1×5 и будет состоять из пяти единиц. Аналогично, чтобы создать массив из нулей, можно использовать функцию zeros:

arr = zeros(1, 5);

Таким образом, создание массива с помощью функций ones и zeros является простым и эффективным способом и очень полезно при разработке алгоритмов и анализе данных в Matlab.

Эффективные способы задания массива в Matlab

Matlab предлагает несколько эффективных способов задания массива, которые могут сэкономить время программиста и улучшить производительность кода.

  • Однострочное задание массива: в Matlab можно создать массив, перечисляя его элементы в одной строке, разделяя их пробелом или запятой. Например, чтобы задать массив из трех элементов – 2, 4 и 6, можно написать: A = [2, 4, 6]. Такой способ инициализации массива эффективен и короток, особенно для небольших массивов.
  • Задание массива с использованием диапазона: в Matlab можно задать массив, используя диапазон значений. Например, чтобы создать массив, содержащий элементы от 1 до 10, можно написать: A = 1:10. Такой способ задания массива полезен, когда нужно быстро создать массив с определенным диапазоном значений.
  • Автоматическое заполнение массива: в Matlab есть возможность заполнить массив заданным числовым или текстовым значением. Например, чтобы создать массив из пяти элементов, содержащих значение 0, можно написать: A = zeros(1, 5). Такой способ эффективен, когда нужно быстро создать массив большого размера и заполнить его определенным значением.
  • Генерация случайных массивов: Matlab имеет встроенные функции для генерации случайных массивов. Например, чтобы создать массив из 100 случайных чисел от 0 до 1, можно написать: A = rand(1, 100). Такой способ задания массива полезен, когда нужно сгенерировать случайные данные для расчетов или экспериментов.

Использование эффективных способов задания массива в Matlab позволяет сократить количество кода, улучшить читаемость программы и повысить производительность выполнения. При выборе способа задания массива следует учитывать размерность массива, его элементы и конкретные требования к коду.

Использование оператора линейного присваивания

Оператор линейного присваивания в MATLAB – это один из основных способов инициализации массивов. С его помощью можно легко и эффективно создавать и заполнять массивы любого размера и типа данных.

Синтаксис оператора линейного присваивания в MATLAB выглядит следующим образом:

имя_массива = выражение;

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

Примеры использования оператора линейного присваивания:

  • Инициализация массива с помощью постоянного значения:
    • a = 5; – создание массива a размером 1×1 и присваивание ему значение 5.
    • b = 1:5; – создание массива b размером 1×5 и присваивание ему значения от 1 до 5.
    • c = [1, 2, 3, 4]; – создание массива c размером 1×4 и присваивание ему значений 1, 2, 3, 4.

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

    Инициализация массива с помощью функции linspace и logspace

    В Matlab для инициализации массивов с равными интервалами значений можно использовать функции linspace и logspace.

    Функция linspace создает массив с равномерно распределенными значениями между указанными границами. Синтаксис функции имеет вид: linspace(start, stop, n), где start и stop задают начальное и конечное значение массива, а n определяет количество элементов массива. Например, чтобы создать массив с 5 значениями от 0 до 10, можно использовать выражение: linspace(0, 10, 5).

    Функция logspace позволяет создать массив с логарифмически увеличивающимися значениями. Синтаксис функции имеет вид: logspace(start, stop, n), где start и stop задают начальное и конечное значение массива в логарифмической шкале, а n определяет количество элементов массива. Например, чтобы создать массив с 5 значениями, начиная с 10^1 и заканчивая 10^3, можно использовать выражение: logspace(1, 3, 5).

    Оба этих метода инициализации массивов очень удобны в использовании и позволяют быстро создавать нужные значения для дальнейшей обработки данных в Matlab.

    Заполнение массива с помощью случайных чисел

    В Matlab существует несколько способов заполнить массив случайными числами. Один из самых простых способов – это использование функции rand. Функция rand возвращает случайное число от 0 до 1.

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

    Если нужно заполнить массив случайными числами с плавающей точкой, которые подчиняются определенному распределению, можно воспользоваться функциями randn и randperm. Функция randn возвращает случайные числа с нормальным распределением, а функция randperm возвращает случайную перестановку заданного диапазона чисел.

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

    Способы задания массива в программе Матлаб

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

    Наиболее простой и понятный способ задания массива — это указание его элементов в явном виде. В этом случае, каждый элемент записывается через запятую, а весь массив заключается в квадратные скобки. Например, вот так можно задать одномерный массив из трех элементов: [1, 2, 3]. Для задания многомерных массивов используется вложенность скобок. Например, вот так можно задать двумерный массив: [[1, 2, 3], [4, 5, 6]].

    Однако, в случае больших массивов, это может быть долгим и многочисленным процессом. В таких случаях можно воспользоваться функциями Matlab для генерации последовательностей чисел. Например, функция linspace(a, b, n) генерирует массив из n чисел, равномерно распределенных между a и b. А функция zeros(n) создает массив из нулей размером n x n. Существует также множество других функций Matlab для генерации специальных массивов.

    Если у вас уже есть массив данных, сохраненных во внешнем файле, то Matlab позволяет импортировать эти данные в программу. Для этого существует множество функций, таких как load(), csvread(), и xlsread(). Эти функции позволяют считать значения из файлов различных форматов, таких как .mat, .csv и .xls, и преобразовывать их в массивы в Matlab. Это может быть полезно при работе с большими объемами данных, а также при анализе результатов экспериментов или симуляций.

    Как создать массив в Matlab

    Массив в Matlab представляет собой упорядоченную коллекцию элементов, которые могут быть числами, строками, логическими значениями или другими массивами. Создание массивов в Matlab может быть выполнено различными способами:

      Вручную задать значения элементов массива:

    arr = [1, 2, 3, 4, 5];
    arr = 1:5;
    arr = linspace(start, end, n);
    arr = rand(1, n);
    arr = zeros(1, n);
    arr = ones(1, n);
    arr = NaN(1, n);

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

    Основные способы создания массива

    В языке Matlab существует несколько способов создать массив. Рассмотрим основные из них:

      Создание пустого массива

    Пустой массив можно создать с помощью функции zeros или функции ones, указав в аргументах размерность массива:

    A = zeros(3, 4); % создание пустого массива размером 3x4, заполненного нулями B = ones(2, 2); % создание пустого массива размером 2x2, заполненного единицами

    Массив со значениями можно задать явно, перечислив их в квадратных скобках:

    C = [1 2 3; 4 5 6; 7 8 9]; % создание массива 3x3 с заданными значениями D = [0.1 0.2 0.3]; % создание одномерного массива с заданными значениями

    Для создания массивов со значениями, изменяющимися в определенном диапазоне, можно использовать функции linspace и logspace:

    E = linspace(1, 5, 5); % создание массива со значениями от 1 до 5 с шагом 1 F = logspace(0, 2, 4); % создание массива со значениями от 10^0 до 10^2 с логарифмическим шагом

    В языке Matlab существует множество встроенных функций, которые позволяют создавать массивы заданной структуры. Некоторые из них:

    • eye — создает единичную матрицу
    • rand — создает массив случайных чисел от 0 до 1
    • randn — создает массив случайных чисел из нормального распределения
    G = eye(3); % создание единичной матрицы размером 3x3 H = rand(2, 3); % создание массива случайных чисел размером 2x3

    При выборе способа создания массива важно учитывать его размерность и значения элементов. Каждый из представленных способов имеет свои особенности и может быть наиболее удобным в определенных ситуациях.

    Массивы в Matlab: использование функций

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

    Одной из наиболее часто используемых функций является функция zeros . Она позволяет создать массив заданного размера, заполненный нулями. Например, чтобы создать массив размером 3×3 заполненный нулями, можно использовать следующий код:

    A = zeros(3, 3); 

    Функция ones работает аналогично, но создает массив, заполненный единицами:

    B = ones(2, 4); 

    Часто требуется создать массив с заданным диапазоном значений. Для этого можно использовать функцию linspace . Она позволяет создать массив из равномерно распределенных значений в заданном интервале. Например, чтобы создать массив из 5 значений, равномерно распределенных в интервале от 0 до 1, можно использовать следующий код:

    C = linspace(0, 1, 5); 

    Если требуется создать массив, заполненный случайными числами, можно воспользоваться функцией rand . Она создает массив размером, указанным в аргументах функции, и заполняет его случайными числами из диапазона от 0 до 1. Например, чтобы создать массив размером 2×2, заполненный случайными числами, можно использовать следующий код:

    D = rand(2, 2); 

    Функции randn и randi работают аналогично, но создают массивы со случайными нормально распределенными значениями и случайными целыми числами соответственно.

    Конечно, это лишь небольшая часть функций, предоставляемых Matlab для работы с массивами. Благодаря этим функциям работа с массивами становится гораздо проще и эффективнее.

    MATLAB – Массивы

    Все переменные всех типов данных в MATLAB являются многомерными массивами. Вектор – это одномерный массив, а матрица – это двумерный массив.

    Мы уже обсуждали векторы и матрицы. В этой главе мы обсудим многомерные массивы. Однако перед этим давайте обсудим некоторые специальные типы массивов.

    Специальные массивы в MATLAB

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

    Функция нулей () создает массив всех нулей –

    zeros(5)

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    Функция ones () создает массив всех единиц –

    ones(4,3)

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    ans = 1 1 1 1 1 1 1 1 1 1 1 1

    Функция eye () создает единичную матрицу.

    eye(4)

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

    Функция rand () создает массив равномерно распределенных случайных чисел по (0,1) –

    rand(3, 5)

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003

    Магический Квадрат

    Магический квадрат – это квадрат, который дает одинаковую сумму, когда его элементы добавляются построчно, по столбцам или по диагонали.

    Функция magic () создает массив магических квадратов. Требуется исключительный аргумент, который дает размер квадрата. Аргумент должен быть скаляром, большим или равным 3.

    magic(4)

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

    Многомерные массивы

    В MATLAB массив, имеющий более двух измерений, называется многомерным массивом. Многомерные массивы в MATLAB являются расширением нормальной двумерной матрицы.

    Обычно для создания многомерного массива мы сначала создаем двумерный массив и расширяем его.

    Например, давайте создадим двумерный массив a.

    a = [7 9 5; 6 1 9; 4 3 2]

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    a = 7 9 5 6 1 9 4 3 2

    Массив a является массивом 3 на 3; мы можем добавить третье измерение к, предоставив такие значения, как –

    a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    a = ans(. 1) = 0 0 0 0 0 0 0 0 0 ans(. 2) = 1 2 3 4 5 6 7 8 9

    Мы также можем создавать многомерные массивы, используя функции ones (), zeros () или rand ().

    b = rand(4,3,2)

    MATLAB выполнит приведенный выше оператор и вернет следующий результат –

    b(. 1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(. 2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060

    Мы также можем использовать функцию cat () для построения многомерных массивов. Он объединяет список массивов по указанному измерению –

    Синтаксис для функции cat () –

    B = cat(dim, A1, A2. )
    • B – новый созданный массив
    • A1 , A2 , … массивы, которые будут объединены
    • dim – это размер, по которому объединяются массивы.

    B – новый созданный массив

    A1 , A2 , … массивы, которые будут объединены

    dim – это размер, по которому объединяются массивы.

    пример

    Создайте файл сценария и введите в него следующий код –

    a = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])

    Когда вы запускаете файл, он отображает –

    c(. 1) = 9 8 7 6 5 4 3 2 1 c(. 2) = 1 2 3 4 5 6 7 8 9 c(. 3) = 2 3 1 4 7 8 3 9 0

    Функции массива

    MATLAB предоставляет следующие функции для сортировки, вращения, перестановки, изменения формы или смещения содержимого массива.

    функция Цель
    длина Длина вектора или наибольшее измерение массива
    ndims Количество размеров массива
    numel Количество элементов массива
    размер Размеры массива
    iscolumn Определяет, является ли ввод вектором столбца
    пустой Определяет, является ли массив пустым
    ismatrix Определяет, является ли ввод матричным
    isrow Определяет, является ли ввод вектором строки
    isscalar Определяет, является ли вход скалярным
    isvector Определяет, является ли входной вектор
    blkdiag Создает блочную диагональную матрицу из входных аргументов.
    circshift Смещает массив по кругу
    ctranspose Комплексное сопряженное транспонирование
    диаг Диагональные матрицы и диагонали матрицы
    flipdim Переворачивает массив по указанному измерению
    fliplr Отразить матрицу слева направо
    flipud Переворачивает матрицу вверх-вниз
    ipermute Инвертирует перестановочные размеры массива ND
    переставлять Переставляет размеры массива ND
    repmat Реплики и массив плиток
    перекроить Перекраивает массив
    rot90 Поворот матрицы на 90 градусов
    shiftdim Смещает размеры
    issorted Определяет, находятся ли заданные элементы в отсортированном порядке
    Сортировать Сортирует элементы массива в порядке возрастания или убывания
    sortrows Сортирует строки в порядке возрастания
    выжимать Удаляет одиночные размеры
    транспонировать транспонировать
    векторизовать Векторизованное выражение

    Примеры

    Следующие примеры иллюстрируют некоторые из функций, упомянутых выше.

    Длина, Размер и Количество элементов –

    Создайте файл сценария и введите в него следующий код –

    x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % length of x vector y = rand(3, 4, 5, 2); ndims(y) % no of dimensions in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % no of elements in s

    Когда вы запускаете файл, он показывает следующий результат –

    ans = 8 ans = 4 ans = 23

    Круговое смещение элементов массива –

    Создайте файл сценария и введите в него следующий код –

    a = [1 2 3; 4 5 6; 7 8 9] % the original array a b = circshift(a,1) % circular shift first dimension values down by 1. c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1 % and second dimension values to the left % by 1.

    Когда вы запускаете файл, он показывает следующий результат –

    a = 1 2 3 4 5 6 7 8 9 b = 7 8 9 1 2 3 4 5 6 c = 8 9 7 2 3 1 5 6 4

    Сортировка массивов

    Создайте файл сценария и введите в него следующий код –

    v = [ 23 45 12 9 5 0 19 17] % horizontal vector sort(v) % sorting v m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array sort(m, 1) % sorting m along the row sort(m, 2) % sorting m along the column

    Когда вы запускаете файл, он показывает следующий результат –

    v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2

    Cell Array

    Массивы ячеек – это массивы индексированных ячеек, где каждая ячейка может хранить массив разных измерений и типов данных.

    Функция cell используется для создания массива cell. Синтаксис для функции ячейки –

    C = cell(dim) C = cell(dim1. dimN) D = cell(obj)

    Куда,

    • С – массив ячеек;
    • dim – скалярное целое число или вектор целых чисел, который определяет размеры массива ячеек C;
    • dim1, …, dimN – скалярные целые числа, которые определяют размеры C;
    • obj является одним из следующих –
      • Массив или объект Java
      • .NET массив типа System.String или System.Object

      С – массив ячеек;

      dim – скалярное целое число или вектор целых чисел, который определяет размеры массива ячеек C;

      dim1, …, dimN – скалярные целые числа, которые определяют размеры C;

      obj является одним из следующих –

      пример

      Создайте файл сценария и введите в него следующий код –

      c = cell(2, 5); c = 'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5>

      Когда вы запускаете файл, он показывает следующий результат –

      Доступ к данным в массивах ячеек

      Существует два способа обращения к элементам массива ячеек:

      • Заключение индексов в первую скобку () для ссылки на наборы ячеек
      • Заключение индексов в фигурные скобки <> для ссылки на данные в отдельных ячейках

      Когда вы заключаете индексы в первую скобку, это относится к набору ячеек.

      Индексы массива ячеек в гладких скобках относятся к наборам ячеек.

      c = 'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5>; c(1:2,1:2)

      MATLAB выполнит приведенный выше оператор и вернет следующий результат –

      Вы также можете получить доступ к содержимому ячеек путем индексации с помощью фигурных скобок.

      c = 'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5>; c1, 2:4>

      MATLAB выполнит приведенный выше оператор и вернет следующий результат –

      Справочник по MATLAB — Массивы, матрицы и операции с ними (В.Г.Потемкин)

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

      Массивы являются основными объектами в системе MATLAB: в версиях 4.х допускаются только одномерные массивы — векторы — и двумерные массивы — матрицы; в версии 5.0 возможно использование многомерных массивов — тензоров. Ниже описаны функции формирования массивов и матриц, операции над матрицами, специальные матрицы в рамках системы MATLAB версий 4.х.

      Формирование массивов специального вида

      • ZEROS — формирование массива нулей⬇️
      • ONES — формирование массива единиц⬇️
      • EYE — формирование единичной матрицы⬇️
      • RAND — формирование массива элементов, распределенных по равномерному закону⬇️
      • RANDN — формирование массива элементов, распределенных по нормальному закону⬇️
      • CROSS — векторное произведение⬇️
      • KRON — формирование тензорного произведения⬇️
      • LINSPACE — формирование линейного массива равноотстоящих узлов⬇️
      • LOGSPACE — формирование узлов логарифмичесокй сетки⬇️
      • MESHGRID — формирование узлов двумерной и трехмерной сеток⬇️
      • : — формирование векторов и подматриц ⬇️

      Операции над матрицами

      • DIAG — формирование или извлечение диагоналей матрицы⬇️
      • TRIL — формирование нижнетреугольной матрицы (массива)⬇️
      • TRIU — формирование верхнетреугольной матрицы (массива)⬇️
      • FLIPLR — поворот матрицы относительно вертикальной оси⬇️
      • FLIPUD — поворот матрицы относительно горизонтальной оси⬇️
      • ROT90 — поворот матрицы на 90 градусов⬇️
      • RESHAPE — преобразование размеров матрицы⬇️

      Специальные матрицы

      • COMPAN — сопровождающая матрица характеристического многочлена⬇️
      • HADAMARD — матрица Адамара (Hadamard matrix)⬇️
      • HANKEL — матрица Ганкеля (Hankel matrix)⬇️
      • HILB, INVHILB — матрица Гильберта (Hilbert matrix) ⬇️
      • MAGIC — магический квадрат⬇️
      • PASCAL — матрица Паскаля (Pascal matrix)⬇️
      • ROSSER — матрица Рессера (Rosser matrix)⬇️
      • TOEPLITZ — матрица Теплица (Toeplitz matrix)⬇️
      • VANDER — матрица Вандермонда (Vandermonde matrix)⬇️
      • WILKINSON — матрица Уилкинсона (Wilkinson matrix)⬇️

      Формирование массивов специального вида

      ZEROS — формирование массива нулей

      Y = zeros(n)
      Y = zeros(m, n)
      Y = zeros(size(A))

      Функция Y = zeros(n) формирует массив нулей размера n х n.

      Функция Y = zeros(m, n) формирует массив нулей размера m х n.

      Функция Y = zeros(size(A)) формирует массив нулей соразмерный с массивом A.

      Примеры:

      Формирование одномерного массива из 1000 элементов можно выполнить двумя способами:

      • в виде цикла с n = 1000

      for i = 1 : n, x(i) = 0; end ,

      что требует для реализации около 1.05 с на PC AT/486 (50 МГц);

      • в виде оператора присваивания

      что требует для реализации лишь 0.11 с на том же компьютере.

      ONES — формирование массива единиц

      Y = ones(n)
      Y = ones(m, n)
      Y = ones(size(A))

      Функция Y = ones(n) формирует массив единиц размера n х n.

      Функция Y = ones(m, n) формирует массив единиц размера m х n.

      Функция Y = ones(size(A)) формирует массив единиц соразмерный с массивом A.

      EYE — формирование единичной матрицы

      Y = eye(n)
      Y = eye(m, n)
      Y = eye(size(A))

      Функция Y = ones(n) формирует единичную матрицу размера n х n.

      Функция Y = ones(m, n) формирует единичную матрицу размера m х n.

      Функция Y = ones(size(A)) формирует единичную матрицу соразмерную с матрицей A.

      RAND- формирование массива элементов, распределенных по равномерному закону

      X = rand(n) rand
      X = rand(m, n) rand(‘seed’)
      X = rand(size(A)) rand(‘seed’, x0)

      Функция X = rand(n) формирует массив размера n х n, элементами которого являются случайные величины, распределенные по равномерному закону в интервале (0, 1).

      Функция X = rand(m, n) формирует массив размера m х n, элементами которого являются случайные величины, распределенные по равномерному закону в интервале (0, 1).

      Функция X = rand(size(A)) формирует массив соразмерный с матрицей A, элементами которого являются случайные величины, распределенные по равномерному закону в интервале (0, 1).

      Функция rand без аргументов формирует одно случайное число, подчиняющееся равномерному закону распределения в интервале (0, 1), которое изменяется при каждом последующем вызове.

      Функция rand(‘seed’) возвращает текущее значение базы (начального значения) генератора случайных чисел.

      Функция rand(‘seed’, x0) присваивает базе (начальному значению) генератора случайных чисел значение x0.

      Алгоритм генерации равномерно распределенных случайных чисел основан на линейном конгруентном методе, описанном в работе [1]. Вычисление следующего случайного числа реализовано согласно соотношению

      seed = (7 7 х seed) (mod(2 31 -1).

      Примеры:

      Обращение к генератору равномерно распределенных случайных чисел реализуется следующим образом

      0.0579 0.0099 0.1987 0.1988
      0.3529 0.1389 0.6038 0.0153
      0.8132 0.2028 0.2722 0.7468

      Этот результат может оказаться иным и зависит от версии системы и предыстории сеанса работы.

      Сопутствующие функции: RANDN, SPRANDN.

      1. Park S. K., Miller K. W. Random Number Generators: Good ones are hard to find// Comm. ACM. N.10. Vol. 32, 1988, P. 1192-1201.

      RANDN — формирование массива элементов, распределенных по нормальному закону

      X = randn(n) randn
      X = randn(m, n) randn(‘seed’)
      X = randn(size(A)) randn(‘seed’, x0)

      Функция X = randn(n) формирует массив размера n х n, элементами которого являются случайные величины, распределенные по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1.

      Функция X = randn(m, n) формирует массив размера m х n, элементами которого являются случайные величины, распределенные по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1.

      Функция X = randn(size(A)) формирует массив соразмерный с матрицей A, элементами которого являются случайные величины, распределенные по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1.

      Команда randn без аргументов формирует одно случайное число, распределенное по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1, которое изменяется при каждом последующем вызове.

      Команда randn(‘seed’) возвращает текущее значение базы (начального значения) генератора нормально распределенных случайных чисел.

      Команда randn(‘seed’, x0) присваивает базе (начальному значению) генератора случайных чисел значение x0.

      Алгоритм генерации нормально распределенных случайных чисел использует для формирования несколько значений равномерно распределенных случайных чисел, которые обрабатываются в соответствии с алгоритмом, описанным в работе [1].

      Примеры:

      Обращение к генератору нормально распределенных случайных чисел реализуется следующим образом

      -0.4326 0.2877 1.1892 0.1746
      -1.6656 -1.1465 -0.0376 -0.1867
      0.1253 1.1909 0.3273 0.7258

      Этот результат может оказаться иным и зависит от версии системы и предыстории сеанса работы.

      1. Forsythe G. E., Malcolm M. A., Moler C. B. Computer Methods for Mathematical Computations. Prentice-Hall, 1977.

      CROSS — векторное произведение

      Функция c = cross(a, b) формирует векторное произведение двух векторов в трехмерном пространстве.

      Результирующий вектор имеет следующее описание:

      KRON — формирование тензорного произведения

      Функция K = kron(X, Y) формирует тензорное произведение (произведение Кронекера) двух числовых массивов (матриц), так что резуль­тирующий массив (матрица) имеет вид

      K = X х Y = [xij * Y] =

      Его размер равен m * size(Y, 1) х n * size(Y, 2).

      LINSPACE — формирование линейного массива равноотстоящих узлов

      x = linspace(x1, x2)
      x = linspace(x1, x2, n)

      Функция x = linspace(x1, x2) формирует линейный массив размера 1 х 100, начальным и конечным элементами которого являются точки x1 и x2.

      Функция x = linspace(x1, x2, n) формирует линейный массив размера 1 х n, начальным и конечным элементами которого являются точки x1 и x2.

      LOGSPACE — формирование узлов логарифмичесокй сетки

      x = logspace(d1, d2)
      x = logspace(d1, d2, n)

      Функция x = logspace(d1, d2) формирует вектор-строку, содержащую 50 равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10 d1 до 10 d2 .

      Функция x = logspace(d1, d2, n) формирует вектор-строку, содержащую n равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10 d1 до 10 d2 .

      MESHGRID — формирование узлов двумерной и трехмерной сеток

      [X, Y] = meshgrid(x, y)
      [X, Y] = meshgrid(x)
      [X, Y, Z] = meshgrid(x, y, z)

      Функция [X, Y] = meshgrid(x, y) формирует массивы X и Y, которые определяют координаты узлов прямоугольника, задаваемого векторами x и y. Этот прямоугольник задает область определения функции от двух переменных, которую можно построить в виде 3D-поверхности.

      Функция [X, Y] = meshgrid(x) является сокращенной формой записи функции [X, Y] = meshgrid(x, x).

      Функция [X, Y, Z] = meshgrid(x, y, z) формирует массивы X, Y и Z, которые определяют координаты узлов параллелепипеда, задаваемого векторами x, y и z. Этот параллелепипед задает область определения для вычисления функции от трех переменных и построения 3D-параметрических поверхностей.

      Пример:

      [X, Y] = meshgrid(-2:.2:2, -2:.2:2);
      Z = X.*exp(-X.^2 — Y.^2);
      mesh(Z)

      Сопутствующие функции: SURF, SLICE.

      : — формирование векторов и подматриц

      j : k A(i1 : i2, j1 : j2)
      j : i : k A(n1 : n2)

      Оператор : является очень полезным оператором языка MATLAB. Он применяется для формирования векторов и матриц или для выделения из них подвекторов, подматриц, подблоков массива.

      Формирование векторов:

      j : k
      если j >= k, это вектор вида [j j+1 j+2 . k];
      если j < k, это пустой вектор;
      j : i : k
      если j >= k, это вектор вида [j j+i j+2i. k];
      если i < 0 и j < k, или i >0 и j>k, это пустой вектор.

      Выделение подблоков:

      A(i1 : i2, j1 : j2) — выделение подблока массива A со строками i1 : i2 и столбцами j1 : j2.

      A(i, 🙂 — i-я строка массива A;
      A(:, j) — j-й столбец массива A.

      Поскольку в языке MATLAB элементы массива упорядочены по столбцам, то допустимы операторы вида A(n1:n2), которые выделяют пронумерованные элементы с номера n1 до номера n2. Оператор A( : ) записывает все элементы массива A в виде столбца.

      Операции над матрицами

      DIAG — формирование или извлечение диагоналей матрицы

      X = diag(v) v = diag(X)
      X = diag(v, k) v = diag(X, k)

      Функция X = diag(v) формирует квадратную матрицу X с вектором v на главной диагонали.

      Функция X = diag(v, k) формирует квадратную матрицу X порядка length(v)+abs(k) с вектором v на k-й диагонали.

      Функция v = diag(X) извлекает из матрицы X главную диагональ.

      Функция v = diag(X, k) извлекает из матрицы X диагональ с номером k; при k > 0 это номер k-й верхней диагонали, при k < 0 это номер k-й нижней диагонали.

      Примеры:

      diag(diag(X)) — диагональная матрица;
      sum(diag(X)) — след матрицы X.

      diag(-m : m) + diag(ones(2*m, 1), 1) + diag(ones(2*m, 1), -1)

      формирует трехдиагональную матрицу размера 2*m + 1.

      Для m = 3 результирующая матрица имеет вид: m = 3;

      -3 1 0 0 0 0 0
      1 -2 1 0 0 0 0
      0 1 -1 1 0 0 0
      0 0 1 0 1 0 0
      0 0 0 1 1 1 0
      0 0 0 0 1 2 1
      0 0 0 0 0 1 3

      TRIL — формирование нижнетреугольной матрицы (массива)

      L = tril(X)
      L = tril(X, k)

      Функция L = tril(X) сохраняет нижнюю треугольную часть матрицы X.

      Функция L = tril(X, k) сохраняет нижнюю треугольную часть матрицы X начиная с диагонали с номером k. При k > 0 это номер k-й верхней диагонали, при k < 0 это номер k-й нижней диагонали.

      Пример:

      Для массива X=[1 2 3; 4 5 6; 1 2 3; 4 5 6; 1 2 3; 4 5 6]

      1 2 3
      4 5 6
      1 2 3
      4 5 6
      1 2 3
      4 5 6
      1 0 0
      4 5 0
      1 2 3
      4 5 6
      1 2 3
      4 5 6
      0 0 0
      0 0 0
      1 0 0
      4 5 0
      1 2 3
      4 5 6

      TRIU — формирование верхнетреугольной матрицы (массива)

      U = triu(X)
      U = triu(X, k)

      Функция U = triu(X) сохраняет верхнюю треугольную часть матрицы (массива) X.

      Функция U = triu(X, k) сохраняет верхнюю треугольную часть матрицы (массива) X начиная с диагонали с номером k. При k > 0 это номер k-й верхней диагонали, при k < 0 это номер k-й нижней диагонали.

      Пример:

      Для массива X=[1 2 3; 4 5 6; 1 2 3; 4 5 6; 1 2 3; 4 5 6]

      1 2 3
      4 5 6
      1 2 3
      4 5 6
      1 2 3
      4 5 6
      1 2 3
      0 5 6
      0 0 3
      0 0 0
      0 0 0
      0 0 0
      1 2 3
      4 5 6
      1 2 3
      0 5 6
      0 0 3
      0 0 0

      FLIPLR — поворот матрицы относительно вертикальной оси

      Функция B = fliplr(A) переставляет столбцы массива A симметрично относительно вертикальной оси. Если массив A имеет нечетное число столбцов, то средний столбец остается на своем месте.

      Пример:

      Для массива A = [1 2 3 4; 1 2 3 4 ; 1 2 3 4]

      1 2 3 4
      1 2 3 4
      1 2 3 4
      1 2 3 4
      4 3 2 1
      4 3 2 1
      4 3 2 1
      4 3 2 1

      FLIPUD — поворот матрицы относительно горизонтальной оси

      Функция B = flipud(A) переставляет строки массива A симметрично относительно горизонтальной оси. Если массив A имеет нечетное число строк, то средняя строка остается на своем месте.

      Пример:

      Для массива A = [1 1 1; 2 2 2; 3 3 3; 4 4 4]

      1 1 1
      2 2 2
      3 3 3
      4 4 4
      4 4 4
      3 3 3
      2 2 2
      1 1 1

      ROT90 — поворот матрицы на 90 градусов

      B = rot90(A)
      B = rot90(A, k)

      Функция B = rot90(A) осуществляет поворот массива A размером m х n на 90 градусов против часовой стрелки.

      Функция B = rot90(A, k) осуществляет поворот массива A размером m х n на 90*k, где k = 1, -1, 2, -2.

      Пример:

      Для массива A = [ 1 2 3; 4 5 6]

      1 2 3
      4 5 6
      3 6
      2 5
      1 4
      6 5 4
      3 2 1

      RESHAPE — преобразование размеров матрицы

      B = reshape(A, m, n)

      Функция B = reshape(A, m, n) возвращает массив размером m х n, сформированный из элементов массива A путем их последовательной выборки по столбцам. Если число элементов массива A не равно произведению m * n, выводится сообщение об ошибке.

      С помощью оператора ( : ) можно получить те же результаты, которые можно получить и с помощью функции reshape. Функция reshape выражается через оператор ( : ) следующим образом:

      B = zeros(m, n);
      B( : ) = A;

      Пример:

      Для массива A = [ 1 2 3 4; 1 2 3 4; 1 2 3 4]

      1 2 3 4
      1 2 3 4
      1 2 3 4
      1 3
      1 3
      1 3
      2 4
      2 4
      2 4
      1 1 2 3 3 4
      1 2 2 3 4 4

      Специальные матрицы

      COMPAN — сопровождающая матрица характеристического многочлена

      Функция C = compan(p) формирует сопровождающую матрицу С для входного массива p, который состоит из коэффициентов некоторому многочлена степени n.

      Пример:

      Полиному (x-1)(x-2)(x-3) = x3 — 7x + 6 соответствует вектор коэффициентов p = [1 0 -7 6]; , для которого сопровождающая матрица имеет вид:

      0 7 -6
      1 0 0
      0 1 0

      HADAMARD — матрица Адамара (Hadamard matrix)

      Функция H = hadamard(n) возвращает матрицу Адамара порядка n.

      Матрицы Адамара встречаются в различных приложениях — комбинаторном и численном анализе, обработке сигналов [1, 2]. Это матрицы, составленные из 1 и -1, столбцы которых ортогональны, так что справедливо соотношение

      где [n, n] = size(H) и I = eye(n, n).

      Матрица Адамара порядка n > 2 существует только тогда, когда n кратно 4. Данный алгоритм вычисляет матрицы Адамара для тех случаев, когда величины n, n/12, n/20 являются степенями по основанию 2 [3].

      Пример:

      1 1 1 1 1 1 1 1
      1 -1 1 -1 1 -1 1 -1
      1 1 -1 -1 1 1 -1 -1
      1 -1 -1 1 1 -1 -1 1
      1 1 1 1 -1 -1 -1 -1
      1 -1 1 -1 -1 1 -1 1
      1 1 -1 -1 -1 -1 1 1
      1 -1 -1 1 -1 1 1 -1

      Картина линий уровня для этой матрицы напоминает ковер

      1. Ryser H. J. Combinatorial Mathematics. New York: John Wiley&Sons, 1963.
      2. Pratt W. K. Digital Signal Processing. New York: John Wiley&Sons, 1978.
      3. Golomb S. W., Baumert L. D. The search for Hadamard matrices//Amer. Math. Monthly. Vol. 70, 1963. P. 12-17.

      HANKEL — матрица Ганкеля (Hankel matrix)

      H = hankel(c)
      H = hankel(c, r)

      Функция H = hankel(c) возвращает квадратную матрицу Ганкеля, первый столбец которой совпадает с вектором c, а все элементы H(i, j), i + j > n, лежащие ниже второй главной диагонали, равны нулю.

      Функция H = hankel(c, r) возвращает матрицу Ганкеля, первый столбец которой совпадает с вектором c, а последняя строка с вектором r. Если последний элемент вектора c не равен первому элементу вектора r, то возникает конфликт на второй главной диагонали, когда предпочтение отдается элементу вектора c.

      Примеры:

      c = [1 2 3];
      H = hankel(c)
      H =

      1 2 3
      1 2 0
      3 0 0

      c = 1:3; r = 7:10; H = hankel(c, r)
      Warning: Column wins anti-diagonal conflict.
      > In d:\matlab5\toolbox\matlab\elmat\hankel.m at line 27
      H =

      1 2 3 8
      2 3 8 9
      3 8 9 0

      Warning: Column wins anti-diagonal conflict.
      > In d:\matlab5\toolbox\matlab\elmat\hankel.m at line 27
      Столбец выигрывает конфликт на второй главной диагонали
      > В d:\matlab5\toolbox\matlab\elmat\hankel.m в строке 27

      HILB, INVHILB — матрица Гильберта (Hilbert matrix)

      H = hilb(n)
      H = invhilb(n)

      Функция H = hilb(n) формирует матрицу Гильберта порядка n. Элементы этой матрицы определяются следующим образом:

      Матрица Гильберта — это пример очень плохо обусловленной по отношению к операции обращения матрицы [1].

      Функция H = invhilb(n) формирует матрицу, обратную матрице Гильберта порядка n. Точная обратная матрица — это матрица, элементами которой являются целые числа. Точное представление такой матрицы в арифметике с плавающей точкой возможно только тогда, когда порядок матрицы не превышает 13. Для больших значений n функция invhilb(n) формирует только приближенную матрицу.

      Сравнение функций invhilb(n) и inv(hilb(n)) позволяет выявить несколько источников ошибок:

      • ошибки, вызванные функцией hilb(n);
      • ошибки, связанные с процедурой обращения;
      • ошибки, вызванные функцией invhilb(n).

      Оказывается, что первый источник ошибок, связанный с представлением правильных дробей вида 1/3 или 1/5 в арифметике с плавающей точкой, наиболее существенный.

      Пример:

      Матрица Гильберта порядка 4 имеет число обусловленности 1.5514e+004.

      Ее обратная матрица — это целочисленная матрица вида

      16 -120 240 -140
      -120 1200 -2700 1680
      240 -2700 6480 -4200
      -140 1680 -4200 2800

      а результат обращения в арифметике с плавающей точкой
      format long e, inv(hilb(4))
      1.0e+ 003*
      ans =

      0.0160 -0.1200 0.2400 -0.1400
      -0.1200 1.2000 -2.7000 1.6800
      0.2400 -2.7000 6.4800 -4.2000
      -0.1400 1.6800 -4.2000 2.8000

      1. Forsythe G. E., Moler C. B. Computer Solution of Linear Algebraic Systems. Prentice-Hall, 1967.

      MAGIC — магический квадрат

      Функция M = magic(n) для n > 3 формирует специальную квадратную матрицу порядка n, элементами которой являются целые числа от 1 до n2, суммы элементов которой по строкам и столбцам равны. Эта функция магического квадрата была включена в состав системы MATLAB в 1993 году и подробно описана в работе [1]. Cумму элементов по строкам (столбцам) назовем инвариантом магического квадрата и обозначим mn. Значение инварианта зависит от n и равно

      Если матрицу магического квадрата отнормировать делением на ее инвариант, то получим дважды стохастическую матрицу, обладающую тем свойством, что ее матричная норма любого порядка равна 1 [2].

      Ранг матрицы M зависит от n следующим образом [2]:

      График функции rank(magic(n)) для 3

      1. Moler C. B. MATLAB’s magical mystery tour//The MathWorks Newsletter. 1993. Vol. 7(1). 2. Higham N. J. The Test Matrix Toolbox for MATLAB (version 3.0)//Numerical Analysis Report. Manchester, 1995. Vol. 276.

      PASCAL — матрица Паскаля (Pascal matrix)

      P = pascal(n)
      P = pascal(n, k)

      Функция P = pascal(n) формирует симметрическую положительно определенную квадратную матрицу порядка n, которая составлена из элементов треугольника Паскаля. Треугольник Паскаля представляет собой коэффициенты разложения бинома (1 + w) j , записанные в следующем виде:

      а матрицы Паскаля порядка 3 и 4 имеют следующий вид:

      1 1 1
      1 2 3
      1 3 6
      1 1 1 1
      1 2 3 4
      1 3 6 10
      1 4 10 20

      Функция pascal(n, 0) равносильна функции pascal(n).

      Матрица P = pascal(n, 1) — это нижняя треугольная матрица в разложении Холецкого для матрицы pascal(n) с точностью до знаков чисел в столбцах. Эта матрица обладает свойством P2 = I, где I — единичная матрица [1].

      Матрица P = pascal(n, 2) — это матрица, полученная в результате транспонирования и перестановок в матрице pascal(n, 1). Эта матрица обладает свойством P 3 = I, где I — единичная матрица [2-3].

      Пример:

      Сформируем матрицы pascal(3), pascal(3, 1) и pascal(3, 2): P = pascal(3)

      1 1 1
      1 2 3
      1 3 6
      1 0 0
      1 -1 0
      1 -2 1
      0 0 -1
      0 -1 2
      -1 -1 1
      1 0 0
      0 1 0
      0 0 1
      1 0 0
      0 1 0
      0 0 1
      1. Higham N. J. The Test Matrix Toolbox for MATLAB (version 3.0)//Numerical Analysis Report. Manchester, 1995. Vol. 276.
      2. Higham N. J. Accuracy and Stability of Numerical Algorithms. Society for Industrial and Applied Mathematics, Philadelphia, 1996.
      3. Brawer R., Pirovino M. The linear algebra of the Pascal matrix//Linear Algebra and Appl. 1992. Vol. 174. P. 13-23.

      ROSSER — матрица Рессера (Rosser matrix)

      Функция R = rosser формирует тестовую матрицу для классической симметрической проблемы собственных значений. Эта матрица служила камнем преткновения для многих алгоритмов вычисления собственных значений. Только QR-алгоритм Франсиса, усовершенствованный Уилкинсоном [1] и реализованный в пакете программ EISPACK и в системе MATLAB, позволяет справиться с указанной проблемой.

      Матрица rosser — это матрица порядка 8 с целочисленными элементами, она обладает следующим спектром собственных значений:

      • пара кратных значений;
      • 3 близких собственных значения;
      • нулевое собственное значение;
      • малое ненулевое собственное значение.

      Пример:

      611 196 -192 407 -8 -52 -49 29
      196 899 113 -192 -71 -43 -8 -44
      -192 113 899 196 61 49 8 52
      407 -192 196 611 8 44 59 -23
      -8 -71 61 8 411 -599 208 208
      -52 -43 49 44 -599 411 208 208
      -49 -8 8 59 208 208 99 -911
      29 -44 52 -23 208 208 -911 99

      имеет следующие точные собственные значения:

      10(1 + sqrt(10201))
      1020
      510 + 100sqrt(26)
      1000
      1000
      510 — 100sqrt(26)
      0
      -10(1 + sqrt(10201))

      1. Уилкинсон, Райнш. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра: Пер. с англ. М.: Машиностроение, 1976. 390 с.

      TOEPLITZ — матрица Теплица (Toeplitz matrix)

      T = toeplitz(c)
      T = toeplitz(c, r)

      Функция T = toeplitz(c) возвращает симметрическую матрицу Теплица, определяемую однозначно вектором c.

      Функция T = toeplitz(c, r) возвращает несимметрическую матрицу Теплица, первый столбец которой совпадает с вектором c, а первая строка с вектором r. Если первый элемент вектора c не равен первому элементу вектора r, то возникает конфликт на главной диагонали, когда предпочтение отдается элементу вектора c.

      Примеры:

      c=1:4; T = toeplitz(c)
      T =

      1 2 3 4
      2 1 2 3
      3 2 1 1
      4 3 2 1

      c=1:4; r=1.5:4.5; T=toeplitz(c,r)
      Column wins diagonal conflict.
      Столбец выигрывает конфликт на главной диагонали.
      T =

      1.0000 2.5000 3.5000 4.5000
      2.0000 1.0000 2.5000 3.5000
      3.0000 2.0000 1.0000 2.5000
      4.0000 3.0000 2.0000 1.0000

      VANDER — матрица Вандермонда (Vandermonde matrix)

      Функция V = vander(x) возвращает матрицу Вандермонда порядка length(x), j-й столбец которой определяется соотношением

      Примеры:

      x = [1 2 3 4];
      V = vander(x)
      V =

      1 1 1 1
      8 4 2 1
      27 9 3 1
      64 16 4 1

      WILKINSON — матрица Уилкинсона (Wilkinson matrix)

      Описание: Функция W = wilkinson(n) формирует тестовую матрицу Уилкинсона для задачи на собственные значения. Это симметрическая трехдиагональная матрица, наибольшие собственные значения которой попарно близки, но не являются кратными.

      Матрица Уилкинсона порядка 7 имеет следующий вид:

      W = wilkinson(7)
      W =

      3 1 0 0 0 0 0
      1 2 1 0 0 0 0
      0 1 1 1 0 0 0
      0 0 1 0 1 0 0
      0 0 0 1 1 1 0
      0 0 0 0 1 2 1
      0 0 0 0 0 1 3

      Обычно в качестве тестовой используется матрица 21-го порядка, имеющая следующие собственные значения:

      1.074619418290340e+001
      1.074619418290332e+001
      9.210678647304920e+000
      9.210678647361334e+000
      8.038941115814275e+000
      8.038941122829025e+000
      7.003951798616376e+000
      7.003952209528676e+000
      6.000234031584169e+000
      6.000217522257100e+000
      5.000244425001915e+000
      4.999782477742904e+000
      4.004354023440856e+000
      3.996048201383625e+000
      3.043099292578824e+000
      2.961058884185728e+000
      2.130209219362503e+000
      1.789321352695079e+000
      9.475343675292900e-001
      2.538058170966714e-001
      -1.125441522119984e+000

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *