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

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

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

Ниже показан пример задания вектора с именем a, и содержащий значения 1, 2, 3, 4:

a = [1 2 3 4]; % вектор-строка

Для доступа к тому или иному элементу вектора используется следующая конструкция языка:

disp( a(1) ); % отображение значения 1-го элемента вектора
disp( a(2) ); % отображение значения 2-го элемента вектора
disp( a(3) ); % отображение значения 3-го элемента вектора
disp( a(4) ); % отображение значения 4-го элемента вектора

т.е. нужно указать имя вектора и в круглых скобках написать номер индекса элемента, с которым предполагается работать. Например, для изменения значения 2-го элемента массива на 10 достаточно записать

a(2) = 10; % изменение значения 2-го элемента на 10

Часто возникает необходимость определения общего числа элементов в векторе, т.е. определения его размера. Это можно сделать, воспользовавшись функцией length() следующим образом:

N = length(a); % (N=4) число элементов массива а

Если требуется задать вектор-столбец, то это можно сделать так

a = [1; 2; 3; 4]; % вектор-столбец

b = [1 2 3 4]’; % вектор-столбец

при этом доступ к элементам векторов осуществляется также как и для векторов-строк.

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

a = [1 2 3 4]; % начальный вектор a = [1 2 3 4]
b = [a 5 6]; % второй вектор b = [1 2 3 4 5 6]

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

a = [a 5]; % увеличение вектора а на один элемент

Недостатком описанного способа задания (инициализации) векторов является сложность определения векторов больших размеров, состоящих, например, из 100 или 1000 элементов. Чтобы решить данную задачу, в MatLab существуют функции инициализации векторов нулями, единицами или случайными значениями:

a1 = zeros(1, 100); % вектор-строка, 100 элементов с
% нулевыми значениями
a2 = zeros(100, 1); % вектор-столбец, 100 элементов с
% нулевыми значениями
a3 = ones(1, 1000); % вектор-строка, 1000 элементов с
% единичными значениями
a4 = ones(1000, 1); % вектор-столбец, 1000 элементов с
% единичными значениями
a5 = rand(1000, 1); % вектор-столбец, 1000 элементов со
% случайными значениями

Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3:

E = [1 0 0; 0 1 0; 0 01]; % единичная матрица 3х3

E = [1 0 0
0 1 0
0 0 1]; % единичная матрица 3х3

Аналогичным образом можно задавать любые другие матрицы, а также использовать приведенные выше функции zeros(), ones() и rand(), например:

A1 = zeros(10,10); % нулевая матрица 10х10 элементов

A2 = zeros(10); % нулевая матрица 10х10 элементов
A3 = ones(5); % матрица 5х5, состоящая из единиц
A4 = rand(100); % матрица 100х100, из случайных чисел

Для доступа к элементам матрицы применяется такой же синтаксис как и для векторов, но с указанием строки и столбца где находится требуемый элемент:

A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3
disp( A(2,1) ); % вывод на экран элемента, стоящего во
% второй строке первого столбца, т.е. 4
disp( A(1,2) ); % вывод на экран элемента, стоящего в
% первой строке второго столбца, т.е. 2

Также возможны операции выделения указанной части матрицы, например:

B1 = A(:,1); % B1 = [1; 4; 7] – выделение первого столбца
B2 = A(2,:); % B2 = [1 2 3] – выделение первой строки
B3 = A(1:2,2:3); % B3 = [2 3; 5 6] – выделение первых двух
% строк и 2-го и 3-го столбцов матрицы А.

Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:

a = 5; % переменная а
A = [1 2 3]; % вектор-строка
B = [1 2 3; 4 5 6]; % матрица 2х3
size(a) % 1х1
size(A) % 1х3
size(B) % 2х3

© 2021 Научная библиотека

Копирование информации со страницы разрешается только с указанием ссылки на данный сайт

Источник

Векторы в Matlab

Введение в векторы в Matlab

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

Вектор строки

Это горизонтальный набор элементов. Он представлен в квадратных скобках. Каждый элемент отделяется запятой или пробелом.

Х = (4 7 8) или Х = (4, 7, 8)

Вектор столбца

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

Векторные операции

Векторные операторы в целом подразделяются на две категории.

1. Арифметическая операция

Рассмотрим два вектора x и y со значениями x = (1 4 5 3) и y = (5 3 2 1), мы можем выполнять различные операции над этими двумя векторами x и y.

а. Умножение: эта функция используется для умножения любого арифметического значения на весь вектор.

Например:

mul = 3 * (1 4 5 3)

Синтаксис: variable name = arithmetic constant * vector name

б. Тригонометрическая функция: мы можем применить любую тригонометрическую функцию к векторному греху, cos, tan, cosec, sec и т. Д.

Пример tri = cos (x)

Ответ: 0, 54 — 0, 65, 0, 28 -0, 99.

Синтаксис: variable name = trigonometric function name ( vector name )

Сумма: показывает общее количество (сложение) элементов в одном векторе.

пример

Вывод всего = 13

Синтаксис: variable name = = sum ( vector name )

с. Длина: показывает длину конкретного вектора, давайте один вектор p = (9 7 5 3 1 9 7 5 3 1)

пример

p = (9 7 5 3 1 9 7 5 3 1)

д. Добавление векторов: Добавление двух или нескольких векторов является простой операцией в Matlab, давайте рассмотрим два вектора p и q.

P = (4 6 3 2) и q = (5 7 9 1)

Вывод Add = (9 13 12 3)

Синтаксис: vector name operator ( + ) vector name

Точно так же мы можем сделать операцию вычитания как sub = p — q

е. Умножение векторов: если мы хотим сделать умножение двух векторов, тогда простой оператор умножения (*) не будет работать. Поэтому нам нужно добавить оператор точки (‘.’) С оператором умножения.

Пример:

P = (4 6 3 2) и q = (5 7 9 1)

выходной сигнал mul = (20 42 27 2)

Синтаксис: variable name = vector name dot operator multiplication operator vector name

Предположим, я хочу узнать квадрат одного конкретного вектора или умножить вектор только на этот вектор.

Тогда синтаксис будет squr = x. ^ 2

2. Реляционная операция

а. Равен оператору : этот оператор сравнивает каждый n каждого элемента из двух векторов и дает выходные данные равные нулю и одной форме

пример

Как мы знаем, есть три элемента в векторе m и в векторе n,

Вышеприведенный оператор выдаст вывод как 0 1 0, что означает, что первое нет не равно, второе число равно, а третье нет не равно. O представляет ложь и 1 представляет истину.

б. Меньше оператора ( ): Больше чем оператор, представленный символом (‘>’). Мы можем сравнить данную матрицу с любой арифметической константой или с любым другим вектором.

Пример:

Выход будет 1 1 1, что означает, что все значения больше, чем значения вектора n.

Вывод — векторы в Matlab

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

Рекомендуемые статьи

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

  1. Типы данных в MATLAB
  2. Использование Matlab
  3. Matlab Альтернативы
  4. В то время как Loop в Matlab
  5. MATLAB Функции
  6. Matlab Compiler | Приложения Matlab Compiler

Источник

Документация

Векторизация

Используя векторизацию

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

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

Менее подверженный ошибкам : Без циклов векторизованный код часто короче. Меньше линий кода означает меньше возможностей ввести программные ошибки.

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

Векторизация кода для общего вычисления

Этот код вычисляет синус 1 001 значения в пределах от от 0 до 10:

Это — векторизованная версия того же кода:

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

Векторизация кода для определенных задач

Этот код вычисляет совокупную сумму вектора в каждом пятом элементе:

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

Операции над массивами

Операторы массивов выполняют ту же операцию для всех элементов в наборе данных. Эти типы операций полезны для повторяющихся вычислений. Например, предположите, что вы собираете объем ( V ) из различных конусов путем записи их диаметра ( D ) и высота ( H ). Если вы собираете информацию всего для одного конуса, можно вычислить объем для того одного конуса:

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

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

Примечание

Размещение периода ( . ) перед операторами * , / , и ^ , преобразовывает их в операторы массивов.

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

Предположим тот матричный A представляет экзаменационные отметки, строки которых обозначают различные классы. Вы хотите вычислить разность между средней оценкой и отдельной музыкой к каждому классу. Используя цикл, операция похожа:

Более прямой способ сделать это с A — mean(A) , который избегает потребности цикла и значительно быстрее.

Даже при том, что A 7 3 матрица и mean(A) 1 3 вектор, MATLAB неявно расширяет вектор, как будто это имело тот же размер как матрица, и операция выполняется как нормальное поэлементное минус операция.

Требование размера для операндов — то, что для каждой размерности, массивы должны или иметь тот же размер или одного из них, 1. Если это требование удовлетворяется, то размерности, где один из массивов имеет размер 1, расширены, чтобы быть одного размера с соответствующей размерностью в другом массиве. Для получения дополнительной информации см. «Совместимые размеры массивов для основных операций».

Другая область, где неявное расширение полезно для векторизации, — то, если вы работаете с многомерными данными. Предположим, что вы хотите выполнить функцию, F , из двух переменных, x и y .

F (x, y) = x*exp (-x 2 Y 2 )

Выполнять эту функцию в каждой комбинации точек в x и y векторы, необходимо задать сетку значений. Для этой задачи необходимо избегать использования циклов, чтобы выполнить итерации через комбинации точки. Вместо этого если один из векторов является столбцом, и другой строка, то MATLAB автоматически создает сетку, когда векторы используются с оператором массивов, таким как x+y или x-y . В этом примере, x 21 1 вектор и y 1 16 вектор, таким образом, операция производит 21 16 матрица путем расширения второго измерения x и первая размерность y .

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

Операции логического массива

Логическое расширение объемной обработки массивов должно векторизовать сравнения и принятие решения. Операторы сравнения MATLAB принимают векторные входные параметры и возвращают векторные выходные параметры.

Например, предположите при сборе данных от 10 000 конусов, вы записываете несколько отрицательных величин для диаметра. Можно определить, какие значения в векторе допустимы с >= оператор:

MATLAB позволяет вам выполнять логический AND или OR на элементах целого вектора с функциями all и any , соответственно. Можно выдать предупреждение если все значения D ниже нуля:

MATLAB может также сравнить два вектора с совместимыми размерами, позволив вам ввести дальнейшие ограничения. Этот код находит все значения, где V является неотрицательным и D больше H :

Чтобы помочь сравнению, MATLAB содержит специальные значения, чтобы обозначить переполнение, потерю значимости и неопределенные операторы, такой как Inf и NaN Логические операторы isinf и isnan существуйте, чтобы помочь выполнить логические тесты для этих специальных значений. Например, часто полезно исключить NaN значения от расчетов:

Примечание

Inf == Inf возвращает true; однако, NaN == NaN всегда возвращает false.

Матричные операции

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

Функция repmat обладает гибкостью в создании матриц из меньших матриц или векторов. repmat создает матрицы путем повторения входной матрицы:

Упорядоченное расположение, устанавливая и считая операции

Во многих приложениях вычисления, сделанные на элементе вектора, зависят от других элементов в том же векторе. Например, вектор, x, может представлять набор. Как выполнить итерации через набор без a for или while цикл не очевиден. Процесс становится намного более ясным и синтаксис, менее громоздкий, когда вы используете векторизованный код.

Устранение избыточных элементов

Много различных путей существуют для нахождения избыточных элементов вектора. Один путь включает функцию diff . После сортировки векторных элементов равные смежные элементы производят нулевую запись, когда вы используете diff функция на том векторе. Поскольку diff(x) дает вектор, который имеет тот меньше элемента, чем x , необходимо добавить элемент, который не равен никакому другому элементу в наборе. NaN всегда удовлетворяет этому условию. Наконец, можно использовать логическую индексацию, чтобы выбрать уникальные элементы в наборе:

Источник

Читайте также:  Способ подготовки кромок для сварки
Оцените статью
Разные способы