Создайте диагональную матрицу или получите диагональные элементы матрицы
D = diag(v)
D = diag(v,k)
x = diag(A)
x = diag(A,k)
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 на: или:-1), diag
:
Обрабатывает вход как векторный вход
Возвращает матрицу с данным вектором по заданной диагонали
Для входных параметров переменного размера, которые не являются векторами переменной длины, diag
:
Обрабатывает вход как матрицу
Не поддерживает входные параметры, которые являются векторами во время выполнения
Возвращает вектор переменной длины
Если вход является переменным размером (: m-by-:n), и имеет форму 0 на 0 во время выполнения, затем вывод 0 1 не 0 на 0. Однако, если вход является постоянным размером 0 на 0, то выводом является []
.
Для входных параметров переменного размера, которые не являются векторами переменной длины (1 на: или:-1), diag
обрабатывает вход как матрицу, из которой можно извлечь диагональный вектор. Это поведение происходит, даже если входной массив является вектором во время выполнения. Чтобы обеспечить diag
, чтобы создать матрицу из входных параметров переменного размера, которые не являются 1 на: или:-1, используйте:
diag(x(:))
вместо diag(x)
diag(x(:),k)
вместо diag(x,k)
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox).
Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Выполнения с Распределенными Массивами (Parallel Computing Toolbox).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.