Azzera filtri
Azzera filtri

How to create a long matrix rapidly

3 visualizzazioni (ultimi 30 giorni)
Sergio
Sergio il 17 Gen 2024
Modificato: Dyuman Joshi il 17 Gen 2024
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

Risposta accettata

Mann Baidi
Mann Baidi il 17 Gen 2024
Modificato: Mann Baidi il 17 Gen 2024
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!

Più risposte (1)

Dyuman Joshi
Dyuman Joshi il 17 Gen 2024
Modificato: Dyuman Joshi il 17 Gen 2024
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

Categorie

Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange

Tag

Prodotti


Release

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by