Problem 972. Set a diagonal
Given a matrix M, row vector v of appropriate length, and diagonal index d (where 0 indicates the main diagonal and off-diagonals are identified by positive and negative integers), return a new matrix where the specified diagonal of M is replaced by v. You may assume that v is the correct length for the specified diagonal. If d is not provided, assume it is zero.
For example,
M = magic(5);
setDiagonal(M,1:4,-1)
ans =
17 24 1 8 15
1 5 7 14 16
4 2 13 20 22
10 12 3 21 3
11 18 25 4 9
Solution Stats
Problem Comments
-
10 Comments
Show
7 older comments
Riccardo Dessì
on 25 Jun 2018
please, when you make use of test cases with floating point numbers specify a common precision, otherwise is impossible to pass the suite and people need to be noob! thx in advanced
Akrem Hadji
on 17 Oct 2020
Please add a precision threshold for floating numbers. Sometimes I get results with an error ~ e-17 close, but still not accepted.
Anton Casas
on 2 Nov 2020
Test cases with 2 input arguments can be very tricky for people without knowledge of nargin, and that is off-topic here. I think a hint should be added on the problem description.
Solution Comments
Show commentsGroup

Indexing II
- 22 Problems
- 160 Finishers
- Getting the indices from a vector
- Symmetry of vector
- Calculate the Number of Sign Changes in a Row Vector (No Element Is Zero)
- Count consecutive 0's in between values of 1
- Find last zero for each column
- Oh Zero Zero Zero!!!
- Create an index-powered vector
- Find nth maximum
- Decimation - Optimized for speed
- Unique values without using UNIQUE function
- Symmetry of vector
- Generate a vector like 1,2,2,3,3,3,4,4,4,4
- Create an n-by-n null matrix and fill with ones certain positions
- Implement a bubble sort technique and output the number of swaps required
- Create a vector whose elements depend on the previous element
- Set a diagonal
- Unique values without using UNIQUE function
- Generate a vector like 1,2,2,3,3,3,4,4,4,4
- Change the sign of even index entries of the reversed vector
- Decimation
- Insert zeros into vector
- Reference Index Number
- Determine the number of odd integers in a vector
- Max index of 3D array
- Finding peaks
- Getting the indices from a vector
Problem Recent Solvers300
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!