Склеить массивы матлаб

Добавил пользователь Алексей Ф.
Обновлено: 19.09.2024

Базовой структурой данных в MATLAB является матрица (matrix): двухмернaя, имеющая прямоугольную форму структура данных, в которой хранится набор элементов данных в простом и легко доступном формате. Эти элементы данных могут быть числами, символами, логическими единицами true или false, или даже другими типами структур данных MATLAB. В MATLAB используются двухмерные матрицы для хранения отдельных чисел, а также, линейных последовательностей данных. В этих случаях размерности 1×1 и 1×n, соответственно, где n – длина числовой последовательности. MATLAB также поддерживает структуры данных, которые имеют больше чем два измерения. В MATLAB эти структуры данных имеют название arrays (массивы). MATLAB является вычислительной средой, основой которой является матрица. Все вводимы в MATLAB данные хранятся в форме матрицы или многомерного массива.

Матрица – это двух мерный массив вещественных или комплексных чисел. В MATLAB имеется ряд функций, которые позволяют создавать различные типы матриц. Простейший способ создания матрицы в MATLAB – использовать оператор констора матрицы, []. Этот оператор создает строку в матрице при вводе элементов (показаны ниже как E) в скобках. Каждый элемент необходимо отделять запятой или пробелом:

row = [E1, E2, . Em] row = [E1 E2 . Em]

Например, для того, чтобы создать матрицу из пяти элементов, напечатайте

A = [12 62 93 -8 22];

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

A = [row1; row2; . ; rown]

В этом примере вводится матрица, состоящая из 3-х строк и 5-и столбцов ( 3×5) чисел. Все строки должны иметь одинаковое число элементов,

A = [12 62 93 -8 22; 16 2 87 43 91; -4 17 -72 95 6]

Этот оператор констора матрицы может создавать только двухмерные матрицы (включая 0×0, 1×1, 1×n,).

Специализированные матричные функции.

ФункцияОписание
onesСоздает матрицу или массив, состоящий из всех единиц
zerosСоздает матрицу или массив, состоящий из всех нулей
eyeСоздает матрицу с единицами на диагонали и остальными нулями
аccumarrayРаспределяет элементы входной матрицы в соответствии с заданным положением в выходной матрице
diagПреобразует вектор в диагональную матрицу
magicСоздает квадратную матрицу, в которой сумма элементов строк, или элементов столбцов, или элементов главных диагоналей одинакова
randСоздает матрицу или массив случайных чисел имеющих равномерное распределнием
randnСоздает матрицу или массив случайных чисел или случайных массивов имеющих нормальное распределнием
randpermСоздает вектор (1-на-n матрицу) содержащий случайное размещение заданного числа целых

Например, для создания волшебной квадратной матрицы 5×5 воспользумся функцией magic,


Конкатенация (объединение) матриц.

Матричная конкатенация – это объединение одной или большего числа матриц, для получения новой матрицы. Скобки [] используются не только как конструктор матрицы, но также как оператор конкатенации. Результатом выражения C = [A B] является конкатенация матриц A и B по горизонтали. Результатом выражения C = [A; B] является конкатенация матриц A и B по вертикали. This example constructs a new matrix C by concatenating matrices A and B in a vertical direction:

A = ones(2, 5) * 6; % матрица 2×5 все элементы которой равны 6

B = rand(3, 5); % матрица 3×5 состоящая из случайных чисел

C = [A; B] % конкатенация матриц A и B по вертикали


Функции матричной конкатенации

ФункцияОписание
catКонкатенация матриц вдоль заданного направления
horzcatКонкатенация матриц по горизонтали
vertcatКонкатенация матриц по вертикали
repmatКонкатенация матриц по горизонтали и по вертикали
blkdiagСоздания блочной диагональной матрицы из существующих матриц

Генерирование числовых последовательностей, оператор двоеточие (:).

Оператор двоеточие (first:last) генерирует матрицу 1×n (или вектор) последовательных чисел от первого числа до последнего. По умолчанию получаем последовательность чисел, увеличивающихся на единицу, каждое последующее на 1 больше предыдущего.

10 11 12 13 14 15

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

-2.5000 -1.5000 -0.5000 0.5000 1.5000 2.5000

Для генерирования числовых последовательностей с шагом, отличным от 1, оператор двоеточие может использоваться со указанием величины приращения элементов (first:step:last). Величина step указывает шаг приращения (уменьшения, если step является отрицательным числом) элементов последовательности чисел. Например,

10 15 20 25 30 35 40 45 50

Шаг может быть дробным или отрицательным числом,

3.0000 3.2000 3.4000 3.6000 3.8000

9 8 7 6 5 4 3 2 1

Для доступа к отдельному элементу матрицы задайтеномерстроки и номерстолбца используя следующу запись A(n, m), где A – матричная переменная. Номерстолбца всегда указывается первым, а номерстолбца – втрым, например,

для доступа к элементу в 4-й строке, 2-й колонке напечатайте

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

Линейная индексация матриц.Вы можете обращаться к элементу матрицы используя единственный индекс, A(k). MATLAB хранит матрицы и массивы не в той форме, в которой они появляются в командном окне, а как единый столбец элементов. Этот единый столбец составлен из столбцов матрицы, каждый столбц присоединяется к предыдущему. Так, матрица A

A = [2 6 9; 4 2 8; 3 5 1]

в действительности хранится в памяти как последовательность

2, 4, 3, 6, 2, 5, 9, 8, 1

Элемент с строке 3, столбец 2 матрицы A (значение = 5) может быть идентифицирован как элемент 6 в действительной хранимой последовательности. Для доступа к этому элементу, есть возможность использовать стандартный синтаксис A(3,2), или есть возможность применить A(6), относящуюся к линейной индексации.

Обращение к последовательности элементов. Для матрицы A размерности 4×4, сумму элементов 4-го столбца можно вычислить набрав

A(1,4) + A(2,4) + A(3,4) + A(4,4)

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

обращается к элементам в строках с 1-й по m-ю, n-го столбца матрицы A. Используя эту запись, можно вычислить сумму элементов 4-го столбца матрицы A более компактно:

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

MATLAB поддерживает тип индексации массивом, при которой один массив используется как индекс в другом массиве. Этот тип индексации может быть основан на задании в массиве индексов либо номеров, либо размещения элементов. В приведенном ниже примере массив B состоит из индексов 1, 3, 6, 7, и 10 массива A. В этом случае, числовые значения элементов массива B соответствуют положению элементов в массиве A:

5 10 15 20 25 30 35 40 45 50

Ключевое слово end (конец). MATLAB предоставляет ключевое слово end для доступа к последнему элементу массива. В предыдущем примере можно использовать запись

Описание всех элементов строки или столбца. Двоеточие само по себе относится ко всем элементам строки или столбца матрицы. Используя следующую запись может быть вычислена сумма элементов во 2-м столбце волшебной квадратной 4×4 матрицы A:

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

Получение информации о матрице.

Функции, возвращающие информации о форме матрицы.

ФункцияОписание
lengthВозвращает величину самой длинной размерности
ndimsВозвращает число размерностей
numelВозвращает число элементов
sizeВозвращает длину каждой размерности

Изменение размерности и формы матриц.

Способы увеличения размерности матрицы.

• Конкатенация новых элементов

• Размещение элементов за границами матрицы

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

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

Пример. Дана матрица 3×5,

A = [ 10 20 30 40 50; .

60 70 80 90 100; .

110 120 130 140 150];

ее необходимо дополнить 4-й строкой. Разместим новый элемент в 1-м столбце не существующей 4-й строки исходной матрицы. MATLAB расширит матрицу A добавлением новой 4-й строки, заполнив нулями колонки со 2-й по 5-ю.

60 70 80 90 100

110 120 130 140 150

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

Пример. Дана матрица 4×4,

из нее необходимо удалить 2-й столбец,

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

в результате получим:

16 9 3 6 13 12 1

Функции, изменяющие форму матрицы

ФункцияОписание
reshapeИзменяет форму матрицы
rot90Вращает матрицу на 90 градусов
fliplrПоворачивает матрицу относительно вертикальной оси
flipudПоворачивает матрицу относительно горизонтальной
flipdimПоворачивает матрицу относительно заданного направления
transposeПоворачивает матрицу относительно ее главной диагонали, заменяя вектора-строки на вектора-столбцы, и наоборот
ctransposeТранспонирует матрицу и заменяет каждый элемент комплексно-сопряженным

Примеры применения функций, изменяющих форму матрицы.

Используя матрицу А, имеющую размерность 3×4 построить матрицу В размерности 2×6:

A = [1 4 7 10; 2 5 8 11; 3 6 9 12]

B = reshape(A, 2, 6)

Для транспонирования матрицы можно использовать как функцию transpose, так и оператор (.’)s:

Скаляры.Скалярная величина – это любое отдельное вещественное или комплексное число, которое представлено вMATLAB как матрица размерности 1×1:

Функция isscalar определяет, содержит ли переменная скалярную величину:

Векторы. Вектор – это матрица, одина из размерностей которой равна единице, а другие больше единицы. Пример числового вектора-строки:

Matlab - пакет прикладных программ для проведения вычислений и одноименный язык программирования. Изначально эта программа развивалась именно как ПО для работы с матрицами (облегчения машинного решения матричных уравнений) - Matrix Laboratory.

Что нужно знать новичку.

Как задать матрицу в матлаб?

Указанная команда объявляет матрицу 3 на 3. Матрица (массив - матрица с одной строкой) объявляется при помощи квадратных скобок, строки разделяются точкой с запятой.

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

Для сложения, вычитания матриц используют + и -
Для поэлементного сложения .+
поэлементного умножения .* и т.д.

Как умножить (разделить) матрици?

Умножать матрици очень просто. Для это воспользуйтесь обычным оператором *

Для работы с матрицами предусмотрены операции левого и правого деления (ведь в случае матриц от перемены мест многое меняется).

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

Пример для матриц объявленных выше:

Логические операции для матриц

В матлаб есть возможность использовать логические операции для матриц. При этом все что не ноль - true.
Оперция или:
Обозначается вертикальной чертой или or(a,b)

Операция И:
Обозначается амперсандом или функцией and(a,b)

Как найти элементы в массиве?

Поиск элементов по условию:

Выведены номера элементов. Т.е. первый, второй и пятый больше или равны двум.
Напомню, что массивы в матлаб нумеруются с единицы.

Как же получить элементы по номерам?

Проверка массивов на соответствие условию.

Если хотя бы один элемент удовлетворяет условию - возвращена будет единица.

Операции с массивамии полиномами в среде компьютерных вычислений MATLAB:Метод. указания / Самар. гос. аэрокосм. ун-т.; сост. А.А. Федотов; Самара, 2012. 12 с.

В методических указаниях изложены основные сведения об особенностях работы с числовыми массивами и полиномами в среде программированияMATLAB.Рассматривается решение различных практических задач обработки одномерных и двумерных числовых массивов средствами среды MATLAB. Приведены порядок выполнения работы и требования к отчету.

Ил. 3. Библиогр. 3 назв.

Печатаются по решению редакционно-издательского совета Самарского государственного аэрокосмического университета имениакадемика С.П. Королева

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

Задачи:

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

2. Используя полученные теоретические сведения, выполнить задания лабораторной работы и подготовить отчет.

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАБОТЫ

Формированиемассивов данных в системе MATLAB

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

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

Исходные значения вектора-строки можно задавать путем поэлементного ввода. Для этого вначале указывают имя вектора, затем ставят знак присваивания “=”, далее открывающую квадратную скобку “[“, за ней значения вектора, отделяя их между собой пробелами или запятыми. Запись завершается закрывающей квадратной скобкой “]”. На рисунке 1 приведено командное окно создания вектора-строки.

Вектор-столбец задается аналогично вектору строке, но элементы отделяются друг от друга знаком “;”. Для создания вектора-столбца можно также использоватьформу записи с указанием значений через пробел,при этом в конце добавляется апостроф '. На рисунке 2 приведено командное окно создания вектора-столбца.


Рисунок 1 – Окно результата создания вектора-строки

Рисунок 2 – Окно результата создания вектора-столбца

Язык программирования MATLAB дает пользователям возможность сокращенного ввода вектора, элементы которого являются арифметической прогрессией.

>>A=nz:h:kz

где: nz – начальное значение прогрессии (первый элемент вектора), kz – конечное значение прогрессии (последний элемент вектора), h – разность прогрессии (шаг).


Рисунок 3 – Окно результата создания матрицы

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

Для того чтобы MATLAB не выводил каждый раз значение переменной после ее ввода, необходимо завершать ввод каждой команды знаком “;”.

Матрицу можно преобразовать в вектор-строку с помощью команды следующего вида:

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

A(i, j) – обращение к элементу i-й строки j-го столбца;

A(i, :) – обращение к i-й строки;

A(:, j) – обращение кj-му столбцу.

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

>>A(2, 3)=[];

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

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

Для выполнения операции конкатенации массивов – объединения нескольких массивов в один, в системе MATLABнеобходимо выполнить следующие действия:

>>C=[AB] – горизонтальная конкатенация массивов;

>>C=[A; B] – вертикальная конкатенация массивов.

Для определения числа строк и столбцов матрицы Aв системе MATLAB существует Функция size (А), возвращающая вектор [n, p], содержащий данные о количестве строк и столбцов матрицы А, соответственно.

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

zeros (M, N) – создает матрицу размером M на N с нулевыми элементами;

ones (M, N)– создает матрицу размером M на N с единичными элементами;

eye (M, N)– создает матрицу размером M на N с единицами по главной диагонали и всеми остальными нулями;

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

randn (M,N)– создает матрицу размером M на N из случайных чисел, распределенных по нормальному закону в диапазоне от 0 до 1.

Название работы: Работа с многомерными массивами пакета MatLab

Категория: Лабораторная работа

Предметная область: Информатика, кибернетика и программирование

Описание: Использование функций ones zeros rnd и rndn Функции ones создание массивов с единичными элементами zeros создание массивов с нулевыми элементами и rnd или rndn создание массивов с элементами случайными числами с соответственно равномерным и нормальным распределением могут также использоваться для создания многомерных массивов. Примеры приводятся ниже: E=ones332 E::1 = 1 1 1 1 1 1 1 1 1 E::2 = 1 1 1 1 1.

Дата добавления: 2014-02-05

Размер файла: 39.12 KB

Работу скачали: 10 чел.

Федеральное агентство по образованию

Государственное образовательное учреждение высшего

Тульский государственный университет

Применение ЭВМ в электроэнергетических расчетах

Лабораторная работа №7

Работа с многомерными массивами пакета MatLab .

Форма обучения (очная)

Знакомство с возможностями системы MATLAB : освоение навыков работы с многомерными мас c ивами в пакете MATLAB .

>> M=[1 2 3;4 5 6;7 8 9]

Для добавления новой страницы с тем же размером можно расширить М следующим образом:

>> M(. 2)=[10 11 12;13 14 15;16 17 18]

Посмотрим, что теперь содержит массив М при явном его указании:

Как можно заметить, числа в выражениях М(: , : , 1) и М(: , : , 2) означают номер страницы.

  1. Использование функций ones , zeros , rand и randn

Функции ones (создание массивов с единичными элементами), zeros (создание массивов с нулевыми элементами) и rand или randn (создание массивов с элементами – случайными числами с соответственно равномерным и нормальным распределением) могут также использоваться для создания многомерных массивов. Примеры приводятся ниже:

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

Empty array: 3-by-3-by-3-by-0

Как видно из данного примера, пустой массив возвращается с соответствующим комментарием.

Для создания многомерных массивов служит описанная ранее для матриц специальная функция конкатенации cat :

  1. с at ( DIM , A , B ) – возвращает результат объединения двух массивов А и В вдоль размерности DIM ;
  2. с at (2, A , B ) – возвращает массив [ A , B ], в котором объединены ряды (горизонтальная конкатенация);
  3. с at (1, A , B ) – возвращает массив [ A , B ], в котором объединены столбцы (вертикальная конкатенация);
  4. В=с at ( DIM , A 1, A 2,…) – объединяет множество входных массивов А1, А2,… вдоль размерности DIM ;

Функции с at ( DIM , C ) и с at ( DIM , C . FIELD ) обеспечивает соответственно конкатенацию (объединение) ячеек массива ячеек или структур массива структур, содержащих числовые матрицы, в единую матрицу. Ниже приводятся примеры применения функции cat :

Читайте также: