I need to produce a matrix that has one's along the diagonal from the upper right to the lower left

15 次查看(过去 30 天)
I need to produce a matrix along a square matrix of size "n" that has one's along the diagonal from the upper right to the lower left. I can't use "for" or an "if" statement. Any idea?
What doesn't work is:
function Y = reverse_diag(n)
zeroes = zero(n);
x = zero;
x(1:1:n,n:-1:1) =1;
Y = x;
end

采纳的回答

DJ V
DJ V 2016-11-12
Thanks, but use of diag is explicit;y forbidden.

更多回答(2 个)

Walter Roberson
Walter Roberson 2016-11-12
n:n-1:something
  3 个评论

请先登录,再进行评论。


Ahmet Cecen
Ahmet Cecen 2016-11-12
x(1:1:n,n:-1:1) =1;
You cannot index points inside a matrix like that. MATLAB indexing reads like this:
Matrix(a,b) => For every a corresponding to every b.
So what you are doing is, say for the first row, fill every column (n:-1:1), then for the second row and so forth.
What you need to do is either use a for loop manually, or use the function:
diag()
followed by the function:
fliplr()

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by