Putting spaces between elements of a string/
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
jeet-o
el 4 de En. de 2026
Comentada: Walter Roberson
el 5 de En. de 2026
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.
Respuesta aceptada
John D'Errico
el 4 de En. de 2026
Editada: John D'Errico
el 4 de En. de 2026
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 comentarios
Walter Roberson
el 5 de En. de 2026
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
Más respuestas (2)
Matt J
el 5 de En. de 2026
A=['011001110000'
'101111000000'
'110100011000'
'011010001100'
'010101000110'
'110010100010'
'100001010011'
'101000101001'
'001100010101'
'000110001011'
'000011100101'
'000000111110'];
B=join(string(A-'0'), ' ',2)
0 comentarios
Ver también
Categorías
Más información sobre Environment and Settings en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

