Создание диагональной матрицы или получение диагональных элементов матрицы
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-на-n, k находится в диапазоне − 1).

trace матрицы равно sum(diag(A)).
Примечания и ограничения по использованию:
Если вы поставляете k, то это должно быть вещественное и скалярное целое значение.
Для входов переменного размера, являющихся векторами переменной длины (1-by-: или: -by-1), diag:
Обработка входных данных как вектора
Возвращает матрицу с входным вектором по указанной диагонали
Для входов переменного размера, не являющихся векторами переменной длины, diag:
Обрабатывает входные данные как матрицу
Не поддерживает входные данные, являющиеся векторами во время выполнения
Возвращает вектор переменной длины
Если входной сигнал имеет переменный размер (: m-by-: n) и имеет форму 0-by-0 во время выполнения, то выходной сигнал - 0-by-1, а не 0-by-0. Однако если входной сигнал имеет постоянный размер 0-на-0, то выходной сигнал равен[].
Для входов переменного размера, не являющихся векторами переменной длины (1-by-: или: -by-1), diag обрабатывает входные данные как матрицу, из которой извлекается диагональный вектор. Такое поведение происходит, даже если входной массив является вектором во время выполнения. Вызвать diag для построения матрицы из входных данных переменного размера, которые не являются 1-by-: или: -by-1, используйте:
diag(x(:)) вместо diag(x)
diag(x(:),k) вместо diag(x,k)
См. раздел Ограничения размера переменной для создания кода функций панели инструментов (кодер MATLAB).
Примечания и ограничения по использованию:
Если вы поставляете k, то это должно быть вещественное и скалярное целое значение.
Для входов переменного размера, являющихся векторами переменной длины (1-by-: или: -by-1), diag:
Обработка входных данных как вектора
Возвращает матрицу с входным вектором по указанной диагонали
Для входов переменного размера, не являющихся векторами переменной длины, diag:
Обрабатывает входные данные как матрицу
Не поддерживает входные данные, являющиеся векторами во время выполнения
Возвращает вектор переменной длины
Если входной сигнал имеет переменный размер (: m-by-: n) и имеет форму 0-by-0 во время выполнения, то выходной сигнал - 0-by-1, а не 0-by-0. Однако если входной сигнал имеет постоянный размер 0-на-0, то выходной сигнал равен[].
Для входов переменного размера, не являющихся векторами переменной длины (1-by-: или: -by-1), diag обрабатывает входные данные как матрицу, из которой извлекается диагональный вектор. Такое поведение происходит, даже если входной массив является вектором во время выполнения. Вызвать diag для построения матрицы из входных данных переменного размера, которые не являются 1-by-: или: -by-1, используйте:
diag(x(:)) вместо diag(x)
diag(x(:),k) вместо diag(x,k)
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Эта функция полностью поддерживает распределенные массивы. Дополнительные сведения см. в разделе Запуск функций MATLAB с распределенными массивами (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.