I would like to create the given matrix
0 1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 0 1 1 1
1 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 0
I thought of using the command "zeros" for the diagonal, and then use "ones", but "ones" does not exist.
For instance:
m=[0 ones(1,9);0 ones(0,9)....]
But that won't work.
How can I make such a matrix with such "condensed" commands instead of writing it out completely?
Thanks

 Akzeptierte Antwort

Mann Baidi
Mann Baidi am 17 Jan. 2024
Bearbeitet: Mann Baidi am 17 Jan. 2024

0 Stimmen

Hi,
Assuming you would like to create a diagonal matrix with the diagonal as '0' and rest elements as '1'.
You can try the following code:
x=~diag(ones(10,1))
x = 10×10 logical array
0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0
For more information on "diag" function, you can refer to the link below:
Hope this will help in resolving the query!

Weitere Antworten (1)

Dyuman Joshi
Dyuman Joshi am 17 Jan. 2024
Bearbeitet: Dyuman Joshi am 17 Jan. 2024

1 Stimme

ones does exist, but using eye would be easier and faster here -
n = 10;
x = 1 - eye(n)
x = 10×10
0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0

Kategorien

Produkte

Version

R2023b

Tags

Gefragt:

am 17 Jan. 2024

Bearbeitet:

am 17 Jan. 2024

Community Treasure Hunt

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

Start Hunting!

Translated by