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® могут взять элементы существующего массива и поместить их в различную форму или последовательность. Это может быть полезно для предварительной обработки ваших данных для последующих расчетов или анализа данных.
Изменение
reshape функционируйте изменяет размер и форму массива. Например, измените форму матрицы 3 на 4 к матрице 2 на 6.
A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A = 3×4 1 4 7 10 2 5 8 11 3 6 9 12
B = reshape(A,2,6)
B = 2×6 1 3 5 7 9 11 2 4 6 8 10 12
Пока число элементов в каждой форме то же самое, можно изменить их в массив с любым количеством размерностей. Используя элементы от A , создайте 2 2 3 многомерными массивами.
C = reshape(A,2,2,3)
C = C(. 1) = 1 3 2 4 C(. 2) = 5 7 6 8 C(. 3) = 9 11 10 12
Транспонирование и зеркальное отражение
Общая задача в линейной алгебре состоит в том, чтобы работать с транспонированием матрицы, которая превращает строки в столбцы и столбцы в строки. Для этого используйте transpose функционируйте или .’ оператор.
Создайте 3х3 матрицу и вычислите транспонировать.
A = magic(3)
A = 3×3 8 1 6 3 5 7 4 9 2
B = A.'
B = 3×3 8 3 4 1 5 9 6 7 2
Подобный оператор ‘ вычисляет сопряженное транспонирование для комплексных матриц. Эта операция вычисляет сопряженное комплексное число каждого элемента и транспонирует его. Создайте комплексную матрицу 2 на 2 и вычислите ее сопряженное транспонирование.
A = [1+i 1-i; -i i]
A = 2×2 complex 1.0000 + 1.0000i 1.0000 - 1.0000i 0.0000 - 1.0000i 0.0000 + 1.0000i
B = A'
B = 2×2 complex 1.0000 - 1.0000i 0.0000 + 1.0000i 1.0000 + 1.0000i 0.0000 - 1.0000i
flipud инвертирует строки матрицы в направлении «сверху вниз» и fliplr инвертирует столбцы в направлении «слева направо».
A = [1 2; 3 4]
A = 2×2 1 2 3 4
B = flipud(A)
B = 2×2 3 4 1 2
C = fliplr(A)
C = 2×2 2 1 4 3
Перемена и вращение
Можно переключить элементы массива определенным числом положений с помощью circshift функция. Например, создайте матрицу 3 на 4 и переключите ее столбцы направо 2. Второй аргумент [0 2] говорит circshift переключать строки 0 мест и переключать столбцы 2 места направо.
A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A = 3×4 1 2 3 4 5 6 7 8 9 10 11 12
B = circshift(A,[0 2])
B = 3×4 3 4 1 2 7 8 5 6 11 12 9 10
Переключать строки A 1 и сохраняют столбцы, задают второй аргумент как [-1 0] .
C = circshift(A,[-1 0])
C = 3×4 5 6 7 8 9 10 11 12 1 2 3 4
rot90 функция может вращать матрицу против часовой стрелки 90 градусами.
A = [1 2; 3 4]
A = 2×2 1 2 3 4
B = rot90(A)
B = 2×2 2 4 1 3
Если вы вращаетесь еще 3 раза при помощи второго аргумента, чтобы задать количество вращений, вы заканчиваете с исходным матричным A .
C = rot90(B,3)
C = 2×2 1 2 3 4
Сортировка
Сортировка данных в массиве является также ценным инструментом, и MATLAB предлагает много подходов. Например, sort функциональные виды элементы каждой строки или столбца матрицы отдельно в порядке возрастания или убывания. Создайте матричный A и вид каждый столбец A в порядке возрастания.
A = magic(4)
A = 4×4 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
B = sort(A)
B = 4×4 4 2 3 1 5 7 6 8 9 11 10 12 16 14 15 13
Сортировка каждой строки в порядке убывания. Второе значение аргумента 2 указывает, что вы хотите отсортировать построчный.
C = sort(A,2,'descend')
C = 4×4 16 13 3 2 11 10 8 5 12 9 7 6 15 14 4 1
Чтобы отсортировать целые строки или столбцы друг относительно друга, используйте sortrows функция. Например, отсортируйте строки A в порядке возрастания согласно элементам в первом столбце. Положения изменения строк, но порядок элементов в каждой строке сохраняются.
D = sortrows(A)
D = 4×4 4 14 15 1 5 11 10 8 9 7 6 12 16 2 3 13
Похожие темы
- Удаление строк или столбцов из матрицы
- Индексация массива
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Матрицы и массивы
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 вы создаете матрицу, вводя элементы в каждой строке в виде чисел, разделенных запятыми или пробелами, и используя точки с запятой, чтобы отметить конец каждой строки.
Например, давайте создадим матрицу 4 на 5 a —
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
a = 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8
Ссылка на элементы матрицы
Для ссылки на элемент в m- й строке и n- м столбце матрицы mx мы пишем:
mx(m, n);
Например, чтобы обратиться к элементу во 2- й строке и 5- м столбце матрицы a , как создано в последнем разделе, мы набираем —
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; a(2,5)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 6
Для ссылки на все элементы в m- м столбце мы набираем A (:, m).
Создадим вектор-столбец v из элементов 4- й строки матрицы a —
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; v = a(:,4)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
v = 4 5 6 7
Вы также можете выбрать элементы в столбцах с m по n, для этого мы напишем:
Давайте создадим меньшую матрицу, взяв элементы из второго и третьего столбцов —
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; a(:, 2:3)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 2 3 3 4 4 5 5 6
Таким же образом вы можете создать подматрицу, взяв подчасть матрицы.
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; a(:, 2:3)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 2 3 3 4 4 5 5 6
Таким же образом вы можете создать подматрицу, взяв подчасть матрицы.
Например, давайте создадим подматрицу sa, взяв внутреннюю часть a —
3 4 5 4 5 6
Для этого напишите —
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; sa = a(2:3,2:4)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
sa = 3 4 5 4 5 6
Удаление строки или столбца в матрице
Вы можете удалить всю строку или столбец матрицы, назначив пустой набор квадратных скобок [] для этой строки или столбца. По сути, [] обозначает пустой массив.
Например, давайте удалим четвертый ряд —
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; a( 4 , : ) = []
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
a = 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7
Далее, давайте удалим пятый столбец —
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; a(: , 5)=[]
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
a = 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
пример
В этом примере давайте создадим матрицу 3 на 3 m, затем дважды скопируем вторую и третью строки этой матрицы, чтобы создать матрицу 4 на 3.
Создайте файл сценария со следующим кодом —
a = [ 1 2 3 ; 4 5 6; 7 8 9]; new_mat = a([2,3,2,3],:)
Когда вы запускаете файл, он показывает следующий результат —
new_mat = 4 5 6 7 8 9 4 5 6 7 8 9
Матричные Операции
В этом разделе давайте обсудим следующие основные и часто используемые матричные операции —