Putting spaces between elements of a string/
68 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
jeet-o
il 4 Gen 2026 alle 22:22
Commentato: Walter Roberson
il 5 Gen 2026 alle 20:09
I have found some graph resources that list the adjacency matrices as strings of numbers without spaces, such as:
011001110000
101111000000
110100011000
011010001100
010101000110
110010100010
100001010011
101000101001
001100010101
000110001011
000011100101
000000111110
I would like to insert spaces between each digit, so that I can use it as my adjacency matrix in Matlab. Is there a good way to do this? The matrices will all be square, but of different sizes.
Risposta accettata
John D'Errico
il 4 Gen 2026 alle 23:05
Modificato: John D'Errico
il 4 Gen 2026 alle 23:12
A = ['011001110000';'101111000000';'110100011000';'011010001100';'010101000110';'110010100010';...
'100001010011';'101000101001';'001100010101';'000110001011';'000011100101';'000000111110'];
Note that a simple sprintf statement can insert a space between elements in a string.
sprintf('%c ','011001110000')
So if we apply that format to A, we get...
B = sprintf('%c ',A)
B = reshape(B,size(A,2)*2,[])'
There are probably many ways to have done this, but the above works. Another solution would be to do:
C = repmat(' ',[size(A)].*[1 2]);
C(:,1:2:end) = A
And again, it works. As I said, many ways...
Looking back at your question though, I think you want to turn the string array into an numeric array, to then be used as an adjacency matrix. And that is trivial. I never needed to go into the earlier artifices at all.
D = A - '0'
graph(D)
plot(graph(D))
6 Commenti
Walter Roberson
il 5 Gen 2026 alle 20:09
Note that something like '1001' is known to MATLAB as being a character vector, whereas "1001" is known to MATLAB as being a character string . The characters in character vectors are individually addressible
A = '0100'
A(2)
and you can do arithmetic on them.
A(2) + 2
char(ans)
whereas fpr character strings indexing refers to an entire group
B = ["0100", "1001"]
B(2)
and the + operator means something different:
B(2) + 2
Più risposte (2)
Matt J
il 5 Gen 2026 alle 1:21
A=['011001110000'
'101111000000'
'110100011000'
'011010001100'
'010101000110'
'110010100010'
'100001010011'
'101000101001'
'001100010101'
'000110001011'
'000011100101'
'000000111110'];
B=join(string(A-'0'), ' ',2)
0 Commenti
Vedere anche
Categorie
Scopri di più su Environment and Settings in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

