Программирование на языке MATLAB. Работа с массивами данных
![]()
Вопросы для изучения
4.6 Работа с массивами данных
4.7 Создание и редактирование векторов и матриц
4.8 Выделение подматриц
4.9 Основные поэлементные действия над матрицами. Функции
для обработки векторов и матриц
3.
4.6 Работа с массивами данных
MatLAB — система, специально предназначенная для осуществления сложных
вычислений с векторами и матрицами.
Все данные MatLab представляет в виде массивов.
MATLAB не требует от пользователя предварительного задания размерности и
размеров массива. Пользователь может вводить ее постепенно, при этом MATLAB будет
динамически перестраивать структуру массива.
Массив — упорядоченная, пронумерованная совокупность однородных данных. У
массива должно быть имя.
Под вектором в MatLAB понимается одномерный массив чисел, а под матрицей двумерный массив.
Доступ к элементам массива осуществляется при помощи индекса. В MatLab
нумерация элементов массивов начинается с единицы. Это значит, что индексы должны
быть больше или равны единице.
4.
По умолчанию предполагается, что любая заданная переменная является вектором
или матрицей. Например, отдельное заданное число система воспринимает как матрицу
размером (1*1), а вектор-строку из N элементов — как матрицу размером (1*N).
Массивы в MATLAB не образуют нового типа данных. Числовые массивы состоят
из элементов типа double.
Помимо памяти, необходимой для хранения собственно значений числовых
элементов (по 8 байт на каждый в случае вещественных чисел и по 16 байт в случае
комплексных чисел), при создании массивов MATLAB автоматически выделяет еще и
память для управляющей информации. В этой области памяти хранится размерность
массива, количество элементов по каждой размерности, тип элементов (вещественные
или комплексные) и так далее.
5.
4.7 Создание и редактирование векторов и матриц
Для создания одномерного массива используют:
— операцию конкатенации,
— операцию индексации,
— вызов специальных функций.
— специальную операцию, обозначаемую двоеточием.
Операция конкатенации обозначается с помощью квадратных скобок [ ].
При использовании операции конкатенации объединяемые в одномерный массив
элементы располагаются между открывающей и закрывающей квадратными скобками и
отделяются друг от друга либо пробелом, либо запятой.
Например, следующее выражение, использующее операцию конкатенации
>> z = [1 2 3]
формирует переменную с именем z, являющуюся одномерным массивом,
состоящим из трех элементов (вещественных чисел).
Выражение
>> z = [1,2,3]
по своему результату абсолютно идентично предыдущему.
6.
В MATLAB все одномерные массивы трактуются либо как вектор-строки, либо как
вектор-столбцы. При вводе вектор-строк в операциях конкатенации в качестве
разделителей использовали либо пробелы, либо запятые.
Следующее выражение, использующее операцию конкатенации, задает векторстолбец
>>b=[1;2;3]
состоящий из трех строк, так как точка с запятой в операции конкатенации означает
переход на новую строку.
7.
Операция индексации для ввода массива основана на возможности доступа к
отдельному элементу одномерного массива: после имени массива необходимо указать в
круглых скобках индекс (номер) элемента. В итоге третий элемент массива z
обозначается как z(3), первый элемент — как z(l), второй элемент — как z(2).
Например, следующее выражение, использующее операцию индексации
>> z(1) =1;
>> z(2) =2;
>> z(3) =3;
формирует одномерный массив, состоящий из трех элементов (вещественных
чисел).
Описанное пошаговое создание массива из трех элементов возможно потому, что
MATLAB с каждым новым присваиванием автоматически перестраивает свою
служебную информацию о массиве, а также область памяти, отводимой под его
элементы.
Описанный способ создания одномерного массива не является эффективным и
проигрывает в быстродействии операции конкатенации.
Проигрыш в быстродействии мало заметен когда пользователь вводит всю
информацию с клавиатуры, однако становится критичным в программном режиме,
когда MATLAB подряд исполняет многочисленные инструкции с массивами
8.
Для экономии ресурсов ЭВМ присваивание значений элементам массива, начиная с
последних по номеру элементов и заканчивая первым:
>> z(3) =3;
>> z(2) =2;
>> z(1) =1;
Здесь при выполнении первого же присваивания система MAT’LAB выделяет
память под три вещественных числа, присваивает указанное значение третьему
элементу, второму и затем первому элементу.
9.
Создание массива с вызовом специальных функций увеличить быстродействие
работы MATLAB примерно в 100 раз.
Во-первых, можно предварительно выделить всю необходимую память под
конечный размер массива. Это достигается вызовом функций:
zeros(m,n) – создает матрицу размером M x N c нулевыми элементами;
ones(m,n) – создает матрицу размером M x N c единичными элементами;
eye(m,n) – создает единичную матрицу размером M x N , т.е. с единицами по
главной магистрами и остальными нулевыми элементами;
rand(m,n) – создает матрицу размером M x N из случайных чисел равномерно
распределенных в диапазоне от 0 до 1;
Во-вторых постепенно прописать элементы нужными значениями не требует
перестройки структуры памяти, отведенной под массив и, следовательно, позволяет
сэкономить время. К примеру, для массива z можно перед присваиваниями сделать
следующий вызов функции ones:
>> z=ones(1,3);
сразу создается массив из трех элементов, равных единице. После этого можно
осуществить присваивания нужных значений элементам массива
>> z(1) =1;
>> z(2) =2;
>> z(3) =3;
10.
Еще один способ ввода массива, основан на применении специальной операции,
обозначаемой двоеточием — операцией формирования диапазона числовых значений.
Например, создание одномерного массива чисел в диапазоне от 1 до 3 с
приращением 1:
>>z = 1:1:3;
Сначала включается в формируемый массив левая граница диапазона. Затем к
этому числовому значению прибавляется приращение, которое указывается после
первого двоеточия. Если сумма не превосходит верхней границы диапазона, то она
включается в качестве элемента в формируемый массив. Это все повторяется до тех пор,
пока очередное числовое значение не превысит верхнюю границу.
11.
При необходимости изменить элемент сформированного одномерного массива
можно применить операцию индексации и операцию присваивания:
z(3) = 78;
Если, например, второй элемент массива z должен стать равным среднему
арифметическому первого и третьего элементов, нужно выполнить следующую
команду:
z(2) = (z (1) + z (3) ) /2
Запись несуществующего элемента массива означает добавление нового элемента к
уже существующему массиву:
>> z(4)=7;
Тоже самое действие — «удлинение» массива z, можно выполнить и с помощью
операции конкатенации:
>> z=[z 7];
Можно подвергнуть конкатенации и несколько массивов. Например, следующий
код
>> y=[z z 9 z]
12.
Операцию индексации можно применять как справа от знака операции
присваивания, так и слева от него т.е. осуществляется доступ к элементу массива «по
чтению» или «по записи».
Пример
При попытке чтения несуществующего элемента (например, десятого элемента
массива z) в командном окне появится сообщение об ошибке.
Пример
13.
Для создания двумерного массива (матрицы) в MATLAB используют:
— операцию конкатенации,
— операцию индексации,
— вызов специальных функций.
Значения элементов матрицы вводятся в квадратных скобках по строкам. При этом
элементы строки матрицы разделяются пробелом или запятой, а строки отделяются
одна от другой точкой с запятой.
Матрицу X размером 3×2 (первым указывается число строк, вторым — число
столбцов), получающуюся в результате операции конкатенации
>>Х=[1 2 ;3 4 ;5 6]
1
2
3
4
5
6
14.
Матрицу X можно сформировать:
вертикальной конкатенацией векторов-строк:
>> Х=[[1 2]; [3 4]; [5 6]]
или горизонтальной конкатенацией векторов-столбцов:
>> Х=[[1;3;5],[2;4;6]]
Вертикальную и горизонтальную конкатенации можно также осуществить с
помощью функции cat. Для вертикальной конкатенации ее первый параметр равен
единице
>>X=cat (1, [1 2] , [3 4] , [5 6])
а для горизонтальной конкатенации он равен двум:
>>X=cat(2,[1;3;5],[2;4;6])
15.
Как и рассмотренные ранее одномерные массивы (векторы), двумерные массивы
можно создать с помощью операции индексации, прописывая по отдельности его
элементы необходимыми числовыми значениями.
Например, рассмотренный ранее массив X можно создать следующим образом
>> X(1,1)=1; X(1,2)=2;
>> X (2 ,1) =3 ; Х (2, 2) =4 ;
>> X (3,1) =5 ; Х (3,2) =6 ;
где для доступа («чтению») к отдельным элементам используются круглые скобки
(операция индексации), внутри которых через запятую перечисляются индексы. Здесь
первым указывается номер строки, вторым — номер столбца.
Как и в случае одномерных массивов, это решение является неэффективным, так
как по мере присваивании MATLAB приходится перестраивать структуру массива.
Проблема преодолевается, если присваивание
>> X (3,2) =6;
поместить первым.
16.
Кроме того, можно сразу создать двумерный массив нужного размера функциями
ones или zeros, у этих функций первый параметр задает число строк, а второй число
столбцов. :
>> ones (3,2)
или
>> zeros (3,2)
а затем осуществить присваивания отдельным элементам нужных значений
(порядок присваивании не имеет значения).
Редактирование двухмерных массивов и обращение к их элементам производиться
с использованием операции индексации.
Пример
17.
4.8 Выделение подматриц
Выделение блоков матриц осуществляется индексацией при помощи двоеточия
например
>>X1 = X(2:3,2:3)
Для выделения из матрицы столбца или строки (то есть массива, у которого один из
размеров равен единице) следует в качестве одного из индексов использовать номер
столбца или строки матрицы, а другой индекс заменить двоеточием без указания
пределов. Например, запишите вторую строку матрицы X в вектор x
>>x = X(2, 🙂
При выделении блока до конца матрицы можно не указывать ее размеры, а
использовать элемент end:
>>x = X(2, 2:end)
18.
В MatLab парные квадратные скобки [ ] обозначают пустой массив, который, в
частности, позволяет удалять строки и столбцы матрицы.
Для удаления строки следует присвоить ей пустой массив, например, удаление
первой строки квадратной матрицы М:
>> М = [2 0 3; 1 1 4; 6 1 3];
>> M(1,:)=[];
Аналогичным образом удаляются и столбцы. Для удаления нескольких идущих
подряд столбцов (или строк) им нужно присвоить пустой массив например, удаление
второго и третьего столбца в массиве M
>> М(:, 2:3) = []
19.
4.9 Основные поэлементные действия над матрицами. Функции для
обработки векторов и матриц
Базовые операции над векторами и матрицами – сложение, вычитание,
умножение матрицы на число, умножение матрицы на матрицу – выполняются с
применением обычных знаков арифметических операций, по правилам,
предусмотренным
в
математике,
дополнительно
используют
матричные
арифметические операции представленные в таблице 4.3
20.
Если А и В — массивы одинаковых размеров, то допустимы следующие выражения
>>С = А+В;
>>О = А-В;
где элементы массивов С и D равны сумме или разности соответствующих
элементов массивов А и В. Таким образом, эти операции выполняются поэлементно и
порождают массивы тех же размеров, что и исходные операнды.
В случае, когда один из операндов является скаляром:
>> А+5
скаляр предварительно расширяется до массива размером с матричный операнд.
Например, из скаляра 5 сначала генерируется матрица [5 5 5; 5 5 5], которая и
складывается далее поэлементно с матрицей А.
21.
Для поэлементного перемножения и поэлементного деления массивов одинаковых
размеров применяются операции, обозначаемые комбинациями двух символов: «.*» и
«./».
Кроме операции «. /», называемой операцией правого поэлементного деления, есть
еще операция левого поэлементного деления «.\». При этом выражение А./В приводит к
матрице с элементами A(k,m)/B(k,m), а выражение А .\ В приводит к матрице с
элементами B(k,m)/A(k,m).
Важно помнить, что при сложении или вычитании матрицы должны иметь
одинаковые размеры, а при умножении матриц число столбцов первой матрицы должно
совпадать с числом строк второй матрицы. Невыполнение этих условий вызывает
появление в командном окне сообщения об ошибке.
22.
4.9 Функции для формирования и обработки векторов и матриц
В MATLAB имеются ряд встроенных функций для создания векторов и
матриц. С полным списком функций и примерами их использования можно
познакомиться, выполнив из командной строки команду help elmat и на предыдущих
слайдах.
Количество элементов в одномерном массиве возвращает функция length:
>> length( z )
Для того, чтобы узнать размеры двумерного массива и «геометрию» векторов
(вектор-столбцы или вектор-строки), нужно использовать функцию size:
>> size(X)
23.
Для нахождения числа измерений массива используется функция ndims:
>> ndims(а)
аналогом является использование
>> length(size(M))
Количество измерений в массиве-всегда больше или равно 2 (всегда есть строка и
столбец).
Если после формирования двухмерного массива X потребуется, не изменяя
элементов массива, изменить его размеры, можно воспользоваться функцией
reshape( X, М, N )
где MxN — новые размеры массива х (М — число строк, N — число столбцов).
Если количество элементов в массиве х не равно произведению М на N, то MATLAB
выдаст сообщение об ошибке.
>> reshape(X,2,3)
24.
Для нахождения векторного произведения предназначена специальная функция
cross:
>> u=[1 2 3];
>> v=[3 2 1];
>> cross(u,v)
скалярное произведение векторов вычисляется с помощью функции общего
назначения sum, вычисляющей сумму всех элементов векторов (для матриц эта функция
вычисляет суммы для всех столбцов).
>> sum(u)
25.
Для вычисления скалярного произведения также можно использовать функцию dot:
>> dot(u,v)
Длина вектора вычисляется с помощью функции norm:
>> norm(u)
Угол между векторами вычисляется на основе определения скалярного
произведения, в соответствии с которым оно равно произведению длин векторов на
косинус угла между ними. Отсюда находим выражение для вычисления угла между
ранее заданными векторами u и v:
>> phi=acos(dot(u,v)/(norm(u) *norm(v) ));
Ранее рассмотренные операции отношения и логические операции выполняются в
случае массивов поэлементно, поэтому размеры обеих операндов должны быть
одинаковы.
26.
Функция prod вычисляет произведение элементов столбцов матрицы. К примеру,
для матрицы
>> А=[1 1 1;2 2 2;3 3 3]
она возвращает следующий результат:
>> prod(А)
6
6
6
Функции max и min ищут соответственно максимальный и минимальный элементы
массивов. Для векторов они возвращают единственное числовое значение, а для матриц
они порождают набор, соответственно, максимальных или минимальных элементов,
вычисленных для каждого столбца, например:
>>max (А)
3
3
3
>>[m,k]=max(a)
— k содержит номер максимального элемента в векторе a
>>[m,k]=min(a)
— k содержит номер минимального элемента в векторе a
27.
Функция sort сортирует в возрастающем порядке элементы одномерных массивов,
а для матриц она производит такую сортировку для
>>sort(a) – по возрастанию
>> sort (-a) – по убыванию
>>[a1,ind]=sort(a)
— ind является вектором из целых чисел от 1 до length(a), который соответствует
проделанным перестановкам.
Функция mean вычисляет вычисление среднего арифметического элементов . К
примеру, для матрицы А
>> m=mean(a)
28.
Поменять местами строки матрицы с ее столбцами можно
транспонирования, которая обозначается знаком (апостроф). Например,
операцией
>> А=[1 1 1;2 2 2;3 3 3]
1
2
3
1
2
3
1
2
3
>> В=А’
1
1
1
2
2
2
3
3
3
Для квадратных матриц на своих местах остаются элементы главной диагонали
квадратной матрицы, а остальные «отражаются симметрично» относительно этой
диагонали.
Вектор-строки операцией транспонирования преобразуются в вектор-столбцы, и
наоборот.
29.
Вычисление обратной матрицы можно делать путем вызова функции
inv(имя матрицы)
или возводя матрицу в степень -1.
Вычисление определителя производиться путем вызова функции
det(имя матрицы)
Матрицы и массивы
MATLAB является сокращением от «матричной лаборатории». В то время как другие языки программирования в основном работают с числами по одному, MATLAB® спроектирован, чтобы работать, в основном, с целыми матрицами и массивами.
Все переменные MATLAB являются многомерными массивами , неважно какого типа данных. Матрица A является двумерным массивом, часто используемым для линейной алгебры.
Создание массивов
Чтобы создать массив из четырех элементов в одной строке, разделите элементы любым запятая ( , ) или пробел.
a = [1 2 3 4]
a = 1×4 1 2 3 4
Этот тип массива является вектором-строкой .
Чтобы создать матрицу, которая имеет несколько строк, разделите строки точками с запятой.
a = [1 3 5; 2 4 6; 7 8 10]
a = 3×3 1 3 5 2 4 6 7 8 10
Другой способ создать матрицу состоит в том, чтобы использовать функцию, такую как ones нули , или rand . Например, создайте вектор — столбец размером 5 на 1 из нулей.
z = zeros(5,1)
z = 5×1 0 0 0 0 0
Матричные операции и операции над массивами
MATLAB позволяет вам обрабатывать все значения в матрице с помощью одного арифметического оператора или функции.
a + 10
ans = 3×3 11 13 15 12 14 16 17 18 20
sin(a)
ans = 3×3 0.8415 0.1411 -0.9589 0.9093 -0.7568 -0.2794 0.6570 0.9894 -0.5440
Чтобы транспонировать матрицу, используйте одинарную кавычку ( ‘ ):
ans = 3×3 1 2 7 3 4 8 5 6 10
Можно выполнить стандартное умножение матриц, которое вычисляет скалярные произведения между строками и столбцами, с помощью * оператор. Например, подтвердите, что матрица, умноженная на её обратную матрицу, возвращает единичную матрицу:
p = a*inv(a)
p = 3×3 1.0000 0.0000 -0.0000 0 1.0000 -0.0000 0 0.0000 1.0000
Заметьте, что p не матрица целочисленных значений. MATLAB хранит числа как значения с плавающей точкой, и арифметические операции чувствительны к небольшим различиям между фактическим значением и его представлением с плавающей точкой. Можно отобразить больше десятичных цифр с помощью format команда:
format long p = a*inv(a)
p = 3×3 1.0000 0.0000 -0.0000 0 1.0000 -0.0000 0 0.0000 1.0000
Сбросьте отображение к более короткому формату используя
format short
format влияет только на отображение чисел, а не то, как MATLAB вычисляет или сохраняет их.
Чтобы выполнить поэлементное умножение, а не умножение матриц, используйте .* оператор:
p = a.*a
p = 3×3 1 9 25 4 16 36 49 64 100
Для каждого из матричных операторов умножения, деления и возведения в степень существует соответствующий оператор для поэлементных операций. Например, возведите каждый элемент a в третью степень:
ans = 3×3 1 27 125 8 64 216 343 512 1000
Конкатенация
Конкатенация является процессом слияния массивов для создания бОльших массивов. На самом деле вы сделали свой первый массив путем конкатенации его отдельных элементов. Пара квадратных скобок [] оператор конкатенации.
A = [a,a]
A = 3×6 1 3 5 1 3 5 2 4 6 2 4 6 7 8 10 7 8 10
Конкатенация массивов друг с другом, с использованием запятых, называется горизонтальной конкатенацией. Каждый массив должен иметь одинаковое число строк. Точно так же, когда массивы имеют одинаковое число столбцов, можно конкатенировать вертикально с использованием точки с запятой.
A = [a; a]
A = 6×3 1 3 5 2 4 6 7 8 10 1 3 5 2 4 6 7 8 10
Комплексные числа
Комплексные числа имеют и действительные и мнимые части, где мнимая единица является квадратным корнем из -1 .
sqrt(-1)
ans = 0.0000 + 1.0000i
Чтобы представлять мнимую часть комплексных чисел, используйте любой i или j .
c = [3+4i, 4+3j; -i, 10j]
c = 2×2 complex 3.0000 + 4.0000i 4.0000 + 3.0000i 0.0000 - 1.0000i 0.0000 +10.0000i
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Задание массива в matlab. Одномерные массивы MATLAB. Применение функций обработки данных к векторам
В этом уроке мы коснемся вопросов, связанных с более сложными типами данных, к которым относятся многомерные массивы.
Понятие о многомерных массивах
В MATLAB двумерный массив является частным случаем многомерного массива. Многомерные массивы характеризуются размерностью более двух. Таким массивам можно дать наглядную интерпретацию. Так, матрицу (двумерный массив) можно записать на одном листе бумаги в виде строк и столбцов, состоящих из элементов матрицы. Тогда блокнот с такими листками можно считать трехмерным массивом, полку в шкафу с блокнотами — четырехмерным массивом, шкаф со множеством полок — пятимерным массивом и т. д. В этой книге практически нигде, кроме этого раздела, мы не будем иметь дело с массивами, размерность которых выше двух, но знать о возможностях MATLAB в части задания и применения многомерных массивов все же полезно.
В нашей литературе понятия «размер» и «размерность» массивов являются почти синонимами. Однако они имеют явно разный смысл в данной книге, как и в документации и литературе по системе MATLAB. Под размерностью массивов понимается число измерений в пространственном представлении массивов, а под размером — число строк и столбцов (mxn) в каждой размерности массива.
Применение оператора «:» в многомерных массивах
При обычном задании массивов (с помощью символа точки с запятой «;») число рядов (строк) массива получается на 1 больше, чем число символов «:», но массив остается двумерным. Оператор «:» (двоеточие) позволяет легко выполнять операции по увеличению размерности массивов. Приведем пример формирования трехмерного массива путем добавления новой страницы. Пусть у нас задан исходный двумерный массив М размером 3×3:
Для добавления новой страницы с тем же размером можно расширить М следующим образом:
Посмотрим, что теперь содержит массив М при явном его указании:
Как можно заметить, числа в выражениях М(. 1) и М(. ,2) означают номер страницы.
Доступ к отдельному элементу многомерного массива
Чтобы вызвать центральный элемент сначала первой, а затем второй страницы, надо записать следующие выражения:
Таким образом, в многомерных массивах используется то же правило индексации, что и в одномерных и двумерных. Произвольный элемент, например, трехмерного массива задается как М(1 .j.k), где 1 — номер строки, j — номер столбца и k — номер страницы. Этот элемент можно вывести, а можно присвоить ему заданное значение х: М(1 ,j,k)=x.
Удаление размерности в многомерном массиве
Мы уже отмечали возможность удаления отдельных столбцов присвоением им значений пустого вектора-столбца . Этот прием нетрудно распространить на страницы и вообще размерности многомерного массива. Например, первую страницу полученного массива М можно удалить следующим образом:
Нетрудно заметить, что в этом массиве осталась только вторая страница и что размерность массива уменьшилась на 1 — он стал двумерным.
Создание страниц, заполненных константами и случайными числами
Если после знака присваивания стоит численная константа, то соответствующая часть массива будет содержать элементы, содержащие данную константу. Например, создадим из массива М (см. пример выше) массив, у которого вторая страница содержит единицы:
А теперь заменим первую страницу массива на страницу с нулевыми элементами:
Использование функций ones, zeros, rand и randn
Функции ones (создание массивов с единичными элементами), zeros (создание массивов с нулевыми элементами) и rand или randn (создание массивов с элементами — случайными числами с соответственно равномерным и нормальным распределением) могут также использоваться для создания многомерных массивов. Примеры приводятся ниже:
Эти примеры достаточно очевидны и не требуют особых комментариев. Обратите, однако, внимание на легкость задания размеров массивов для каждой размерности. Кроме того, следует отметить, что если хотя бы одна размерность массива равна нулю, то массив будет пустым:
Empty array: 3-bу-3-bу-3-by-0
Как видно из данного примера, пустой массив возвращается с соответствующим комментарием.
Объединение массивов
Для создания многомерных массивов служит описанная ранее для матриц специальная функция конкатенации cat:
cat(DIM,A,B) — возвращает результат объединения двух массивов А и В вдоль размерности DIM;
cat(2.A.B) — возвращает массив [А.В], в котором объединены ряды (горизонтальная конкатенация);
cat(1, А.В) — возвращает массив [А:В], в котором объединены столбцы (вертикальная конкатенация);
B=cat(DIM.Al,A2. ) — объединяет множество входных массивов Al, A2. вдоль размерности DIM.
Функции cat(DIM,C) и cat(DIM.C.FIELD) обеспечивают соответственно конкатенацию (объединение) ячеек массива ячеек (см урок 15) или структур массива структур (см. урок 14), содержащих числовые матрицы, в единую матрицу. Ниже приводятся примеры применения функции cat:
Работа с размерностями
Вычисление числа размерностей массива
Функция ndims(A) возвращает размерность массива А (если она больше или равна двум). Но если входной аргумент — массив Java или массив массивов Java, то независимо от размерности массива эта функция вернет 2. Следующий пример иллюстрирует применение функции ndims:
4
Вычисление размера размерности массива
Для вычисления размера каждой размерности массива используется функция size:
М = size(A.DIM) возвращает размер размерности, указанной скаляром DIM, в виде вектора-строки размером 2. Для двумерного или одномерного массива А size(A.l) возвращает число рядов, a size (А, 2) — число столбцов;
Для N-мерных массивов А при n>2 size(A) возвращает N-мерный вектор-строку, отражающий страничную организацию массива, последняя составляющая этого вектора равна N. В векторе отсутствуют данные о единичных размерностях (тех, где расположены вектор-строка или вектор-столбец, т. е. size(A,DIM)==l). Исключение представляют N-мерные массивы Java массивов javaarray, которые возвращают размер массива самого высокого уровня.
Вообще, когда входным аргументом size является javaarray, то возвращаемое число столбцов всегда 1, а число рядов (строк) равно размеру (длине) javarray.
Si ze(A) возвращает размер первых N размерностей массива А;
D = size (А), для mxn матрицы А возвращает двухэлементный вектор-строку, в котором первая составляющая — число строк т, а вторая составляющая — число столбцов n;
Size(A) возвращает число рядов и столбцов в разных выходных параметрах (выходных аргументах в терминологии MATLAB) тип.
Перестановки размерностей массивов
Если представить многомерный массив в виде страниц, то их перестановка является перестановкой размерностей массива. Для двумерного массива перестановка часто означает транспонирование — замену строк столбцами и наоборот. Следующие функции обобщают транспонирование матриц для случая многомерных массивов и обеспечивают перестановку размерностей многомерных массивов:
Permute (A, ORDER) — переставляет размерности массива А в порядке, определяемом вектором перестановок ORDER. Вектор ORDER — одна из возможных перестановок всех целых чисел от 1 до N, где N — размерность массива А;
ipermuteCA, ORDER) — операция, обратная permute: permute(permute(A. ORDER), ORDER)=A
Ниже приводятся примеры применения этих функций и функции size:
Сдвиг размерностей массивов
Сдвиг размерностей реализуется функцией shiftdim:
B=shiftdim(X,N) — сдвиг размерностей в массиве X на величину N. Если М>0, то сдвиг размерностей, расположенных справа, выполняется влево, а N первых слева размерностей сворачиваются в конец массива, т. е. движение размерностей идет по кругу против часовой стрелки. Если М Что нового мы узнали?
В этом уроке мы научились:
Создавать многомерные массивы.
Применять оператор «:» в многомерных массивах.
Получать доступ к отдельным элементам многомерных массивов.
Удалять размерности у многомерного массива.
Создавать массивы, заполненные константами и случайными числами.
Осуществлять объединение массивов.
Вычислять число размерностей массива и определять размер каждой размерности.
Переставлять, сдвигать и удалять единичные размерности в многомерных массивах.
Массивы являются основными объектами в системе 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)
Свертка одномерных массивов
Z = conv(x, y)
= deconv(z, x)
Если заданы одномерные массивы x и y длины соответственно m = length(x) и n = length(y), то свертка z — это одномерный массив длины m + n -1, k-й элемент которого определяется по формуле
Функция z = conv(x, y) вычисляет свертку z двух одномерных массивов x и y.
Рассматривая эти массивы как выборки из двух сигналов, можно сформулировать теорему свертки в следующей форме:
Если X = fft() и Y = fft() — согласованные по размерам преобразования Фурье сигналов x и y, то справедливо соотношение conv(x, y) = ifft(X.*Y).
Иначе говоря, свертка двух сигналов эквивалентна умножению преобразований Фурье этих сигналов.
Функция = deconv(z, x) выполняет операцию, обратную операции свертки. Эта операция равносильна определению импульсной характеристики фильтра. Если справедливо соотношение z = conv(x, y), то q = y, r = 0.
Сопутствующие функции: Signal Processing Toolbox .
1. Signal Processing Toolbox Users Guide. Natick: The MathWorks, Inc., 1993.
Установка шаблона матриц и векторов (Matrix. )
Операция Matrix. (Матрицы) обеспечивает задание векторов или матриц Как известно, матрица является заданным своим именем объектом в виде массива данных MathCAD использует одномерные массивы векторы и двумерные собственно матрицы
Матрица характеризуется числом строк (Rows) и числом столбцов (Columns). Таким образом, число элементов матрицы или ее размерность равны Rows x Columns Элементами матриц могут быть числа, константы, пере менные и даже математические выражения Соответственно матрицы могут быть численными и символьными
Если использовать операцию Matrix. то в текущем окне появится не большое окошко, позволяющее задать размерность вектора или матрицы (см рис 515 справа) Для этого нужно указать число строк Rows и число сголбцов Columns Нажав клавишу Enter или указав курсором мыши на изображение клавиши Insert (Вставить) в окошке, можно вывести шаблон матрицы или вектора (вектор имеет один из параметров размерности, равный 1)
Шаблон содержит обрамляющие скобки и темные маленькие прямоугольники, обозначающие места ввода значений (числовых или символьных) для элементов вектора или матрицы. Один из прямоугольников можно сделать активным (отметив его курсором мыши). При этом он заключается в уголок. Это указывает на то, что в него будут вводиться значения соответствующего элемента. С помощью клавиш перемещения курсора можно по горизонтали пробежаться по всем прямоугольникам и ввести все элементы вектора или матрицы.
Рис. 5. 15 Вывод шаблонов вектора и матрицы и их заполнение
Пока идет ввод элементов векторов или матриц, пустые шаблоны отображаются без каких-либо комментариев. Однако, если закончить ввод до полного заполнения шаблонов, система выведет сообщение об ошибке незаполненный шаблон приобретет красный цвет. Вывод несуществующей матрицы или ошибочное указание ее индексов также отображается красным цветом.
Если использовать операцию Insert (Включение) при уже выведенном шаблоне матрицы, то матрица расширяется и ее размер увеличивается. Кнопка Delete (Стирание) позволяет убрать расширение матрицы, вычеркнув из нее строку или столбец.
Каждый элемент матрицы характеризуется индексированной переменной, и его положение в матрице обозначается двумя индексами: один указывает номер строки, другой номер столбца. Для набора индексированной переменной прежде надо ввести имя переменной, а затем перейти к набору индексов нажатием клавиши, вводящей символ]. Прежде указывается индекс строки, а затем через запятую индекс столбца. Примеры вывода индексированных переменных (элементов матрицы М) также даны на рис. 5. 14.
Вырожденная в одну строку или в один столбец матрица является вектором. Его элементы индексированные переменные с одним индексом. Нижняя граница индексов задается значением системной переменной ORIGIN. Обычно ее значение задают равным 0 или 1.
Выше были рассмотрены операции с простыми переменными. Однако с их помощью сложно описывать сложные данные, такие как случайный сигнал, поступающий на вход фильтра или хранить кадр изображения и т.п. Поэтому в языках высокого уровня предусмотрена возможность хранить значения в виде массивов. В MatLab эту роль выполняют векторы и матрицы.
Ниже показан пример задания вектора с именем 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 = ; % начальный вектор a =
b = ; % второй вектор b =
Здесь вектор b состоит из шести элементов и создан на основе вектора а. Используя этот прием, можно осуществлять увеличение размера векторов в процессе работы программы:
a = ; % увеличение вектора а на один элемент
Недостатком описанного способа задания (инициализации) векторов является сложность определения векторов больших размеров, состоящих, например, из 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 = ; % единичная матрица 3х3
E = ; % единичная матрица 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 = ; % матрица 3х3
disp(A(2,1)); % вывод на экран элемента, стоящего во
% второй строке первого столбца, т.е. 4
disp(A(1,2)); % вывод на экран элемента, стоящего в
% первой строке второго столбца, т.е. 2
Также возможны операции выделения указанной части матрицы, например:
B1 = A(:,1); % B1 = – выделение первого столбца
B2 = A(2,:); % B2 = – выделение первой строки
B3 = A(1:2,2:3); % B3 = – выделение первых двух
% строк и 2-го и 3-го столбцов матрицы А.
Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:
a = 5; % переменная а
A = ; % вектор-строка
B = ; % матрица 2х3
size(a) % 1х1
size(A) % 1х3
size(B) % 2х3
Вычисление числа размерностей массива
Функция ndims(A) возвращает размерность массива А (если она больше или равна двум). Но если входной аргумент — массив Java или массив массивов Java, то независимо от размерности массива эта функция вернет 2. Следующий пример иллюстрирует применение функции ndims :
Вычисление размера размерности массива
Для вычисления размера каждой размерности массива используется функция size :
- М = size(A.DIM) возвращает размер размерности, указанной скаляром DIM, в виде вектора-строки размером 2. Для двумерного или одномерного массива А size(A.l) возвращает число рядов, a size (А, 2) — число столбцов;
Для N-мерных массивов А при n>2 size(A) возвращает N-мерный вектор-строку, отражающий страничную организацию массива, последняя составляющая этого вектора равна N. В векторе отсутствуют данные о единичных размерностях (тех, где расположены вектор-строка или вектор-столбец, т. е.size(A,DIM)==l). Исключение представляют N-мерные массивы Java массивов javaarray, которые возвращают размер массива самого высокого уровня.
Вообще, когда входным аргументом size является javaarray, то возвращаемое число столбцов всегда 1, а число рядов (строк) равно размеру (длине) javarray.
- = size(A) возвращает размер первых N размерностей массива А;
- D = size (А) , для mxn матрицы А возвращает двухэлементный вектор-строку, в котором первая составляющая — число строк т, а вторая составляющая — число столбцов n;
- = size(A) возвращает число рядов и столбцов в разных выходных параметрах (выходных аргументах в терминологии MATLAB) тип.
Перестановки размерностей массивов
Если представить многомерный массив в виде страниц, то их перестановка является перестановкой размерностей массива. Для двумерного массива перестановка часто означает транспонирование — замену строк столбцами и наоборот. Следующие функции обобщают транспонирование матриц для случая многомерных массивов и обеспечивают перестановку размерностей многомерных массивов:
- permute (A, ORDER) — переставляет размерности массива А в порядке, определяемом вектором перестановок ORDER. Вектор ORDER — одна из возможных перестановок всех целых чисел от 1 до N, где N — размерность массива А;
- ipermute(A, ORDER) — операция, обратная permute: permute(permute(A. ORDER), ORDER)=A
Ниже приводятся примеры применения этих функций и функции size :
> > C = [ 9 10 ; 11 12 ];
> > size(permute(D.[ 3 2 1 ]))
> > size(ipermute(D.[ 2 1 3 ]))
Язык технических вычислений
Миллионы инженеров и ученых во всем мире используют MATLAB ® , чтобы анализировать и разработать системы и продукты, преобразовывающие наш мир. Матричный язык MATLAB является самым естественным способом в мире выразить вычислительную математику. Встроенная графика облегчает визуализацию и понимание данных. Окружение рабочего стола способствует экспериментированию, исследованиям и открытиям. Эти средства MATLAB и возможности все строго протестированы и разработаны, чтобы работать совместно.
MATLAB помогает вам воплощать свои идеи за пределами рабочего стола. Можно запустить исследования больших наборов данных и масштабировать до кластеров и облаков. Код MATLAB может быть интегрирован с другими языками, позволив вам развернуть алгоритмы и приложения в сети, предприятии и промышленных системах.
Начало работы
Изучите основы MATLAB
Основы языка
Синтаксис, индексация и обработка массива, типы данных, операторы
Импорт и анализ данных
Импорт и экспорт данных, в том числе и больших файлов; предварительная обработка данных, визуализация и исследования
Математика
Линейная алгебра, дифференцирование и интегрирование, преобразования Фурье и прочая математика
Графика
2D и 3D графики, изображения, анимация
Программирование
Скрипты, функции и классы
Создание приложений
Разработка приложений с помощью App Designer, программируемого рабочего процесса или GUIDE
Инструменты разработки программного обеспечения
Отладка и тестирование, организация крупных проектов, интеграция с системой контроля версий, упаковка тулбоксов
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 выполнит приведенный выше оператор и вернет следующий результат –