Создайте диагональную матрицу или получите диагональные элементы матрицы
D = diag(
возвращает квадратную диагональную матрицу с элементами вектора v
)v
на основной диагонали.
Создайте вектор 1 на 5.
v = [2 1 -1 -2 -5];
Использование diag
создать матрицу с элементами v
на основной диагонали.
D = diag(v)
D = 5×5
2 0 0 0 0
0 1 0 0 0
0 0 -1 0 0
0 0 0 -2 0
0 0 0 0 -5
Создайте матрицу с элементами v
на первой супер диагонали (k=1
).
D1 = diag(v,1)
D1 = 6×6
0 2 0 0 0 0
0 0 1 0 0 0
0 0 0 -1 0 0
0 0 0 0 -2 0
0 0 0 0 0 -5
0 0 0 0 0 0
Результатом является матрица 6 на 6. Когда вы задаете вектор длины n
как вход, diag
возвращает квадратную матрицу размера n+abs(k)
.
Получите элементы на основной диагонали случайной матрицы 6 на 6.
A = randi(10,6)
A = 6×6
9 3 10 8 7 8
10 6 5 10 8 1
2 10 9 7 8 3
10 10 2 1 4 1
7 2 5 9 7 1
1 10 10 10 2 9
x = diag(A)
x = 6×1
9
6
9
1
7
9
Получите элементы на первой поддиагонали (k=-1
) A
. Результат имеет на один элемент меньше, чем основная диагональ.
x1 = diag(A,-1)
x1 = 5×1
10
10
2
9
2
Вызывающие diag
дважды возвращает диагональную матрицу, состоящую из диагональных элементов исходной матрицы.
A1 = diag(diag(A))
A1 = 6×6
9 0 0 0 0 0
0 6 0 0 0 0
0 0 9 0 0 0
0 0 0 1 0 0
0 0 0 0 7 0
0 0 0 0 0 9
v
- Диагональные элементыДиагональные элементы, заданные как вектор. Если v
- вектор с N
элементы, затем diag(v,k)
- квадратная матрица порядка N+abs(k)
.
diag([])
возвращает пустую матрицу, []
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
Поддержка комплексного числа: Да
A
- Входная матрицаВходная матрица. diag
возвращает ошибку, если ndims(A) > 2
.
diag([])
возвращает пустую матрицу, []
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
Поддержка комплексного числа: Да
k
- Диагональное числоДиагональное число, заданное в виде целого числа. k=0
представляет основную диагональ, k>0
выше основной диагонали, и k<0
находится ниже основной диагонали.
Для m -by n матрицы, k
находится в области значений
trace
матрицы равно sum(diag(A))
.
Указания и ограничения по применению:
Если вы поставляете k
, тогда это должно быть действительное и скалярное целое значение.
Для входов переменного размера, которые являются векторами переменной длины (1-by-: или: -by-1), diag
:
Обрабатывает вход как вектор
Возвращает матрицу с вектором входа по заданной диагонали
Для входов переменного размера, которые не являются векторами переменной длины, diag
:
Обрабатывает вход как матрицу
Не поддерживает входы, которые являются векторами во время исполнения
Возвращает вектор переменной длины
Если вход переменного размера (: m-by-: n) и имеет форму 0 на 0 во время исполнения, то выход 0 на 1, а не 0 на 0. Однако, если вход является постоянным размером 0 на 0, то выход []
.
Для входов переменного размера, которые не являются векторами переменной длины (1-by-: или: -by-1), diag
обрабатывает вход как матрицу, из которой можно извлечь диагональный вектор. Это поведение происходит, даже если входной массив является вектором во время исполнения. Вызвать diag
чтобы создать матрицу из входов переменного размера, которые не являются 1-by-: или: -by-1, используйте:
diag(x(:))
вместо diag(x)
diag(x(:),k)
вместо diag(x,k)
Смотрите информацию о генерации кода функций тулбокса (MATLAB Coder) в разделе «Ограничения переменных размеров».
Указания и ограничения по применению:
Если вы поставляете k
, тогда это должно быть действительное и скалярное целое значение.
Для входов переменного размера, которые являются векторами переменной длины (1-by-: или: -by-1), diag
:
Обрабатывает вход как вектор
Возвращает матрицу с вектором входа по заданной диагонали
Для входов переменного размера, которые не являются векторами переменной длины, diag
:
Обрабатывает вход как матрицу
Не поддерживает входы, которые являются векторами во время исполнения
Возвращает вектор переменной длины
Если вход переменного размера (: m-by-: n) и имеет форму 0 на 0 во время исполнения, то выход 0 на 1, а не 0 на 0. Однако, если вход является постоянным размером 0 на 0, то выход []
.
Для входов переменного размера, которые не являются векторами переменной длины (1-by-: или: -by-1), diag
обрабатывает вход как матрицу, из которой можно извлечь диагональный вектор. Это поведение происходит, даже если входной массив является вектором во время исполнения. Вызвать diag
чтобы создать матрицу из входов переменного размера, которые не являются 1-by-: или: -by-1, используйте:
diag(x(:))
вместо diag(x)
diag(x(:),k)
вместо diag(x,k)
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите Запуск функций MATLAB с распределенными массивами (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.