How to split this?

4 visualizaciones (últimos 30 días)
Younghun Kim
Younghun Kim el 12 de Jun. de 2020
Comentada: Younghun Kim el 12 de Jun. de 2020
I have M as a result of another function.
and I have to split M like C automatically...
I want to split it every 16 bits.
M => input split function => output C
M = '01100001011000100110001110000000000000000000000000000000000000000000000000000000'
????
C = {'0110000101100010'; '0110001110000000'; '0000000000000000'; '0000000000000000';'0000000000000000';}
how to make it? I'm stuck on this problem...
can you help me?

Respuesta aceptada

Monika Jaskolka
Monika Jaskolka el 12 de Jun. de 2020
Editada: Monika Jaskolka el 12 de Jun. de 2020
C = reshape(M, 16,[])'
C =
5×16 char array
'0110000101100010'
'0110001110000000'
'0000000000000000'
'0000000000000000'
'0000000000000000'
If you need it to end up as a cell array or chars, you can wrap it in cellstr:
C = cellstr(reshape(M, 16,[])')
C =
5×1 cell array
{'0110000101100010'}
{'0110001110000000'}
{'0000000000000000'}
{'0000000000000000'}
{'0000000000000000'}
  1 comentario
Younghun Kim
Younghun Kim el 12 de Jun. de 2020
thank you very much :)

Iniciar sesión para comentar.

Más respuestas (3)

Image Analyst
Image Analyst el 12 de Jun. de 2020
Did you try a simple for loop:
M = '01100001011000100110001110000000000000000000000000000000000000000000000000000000'
counter = 1;
for index1 = 1 : 16 : length(M)
index2 = min(length(M), index1 + 15);
c{counter} = M(index1 : index2);
counter = counter + 1;
end
celldisp(c)
  2 comentarios
Image Analyst
Image Analyst el 12 de Jun. de 2020
Note: This robust, general purpose loop works even if M is not a multiple of 16 characters. Otherwise (if it is known to be a multiple of 16) I'd use reshape().
Younghun Kim
Younghun Kim el 12 de Jun. de 2020
thank you very much :)

Iniciar sesión para comentar.


David Hill
David Hill el 12 de Jun. de 2020
You could make a matrix
newMatrix=reshape(M(1:floor(length(M)/16)*16),16,[])';
  1 comentario
Younghun Kim
Younghun Kim el 12 de Jun. de 2020
thank you very much :)

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 12 de Jun. de 2020
temp = textscan(M,'%16s');
C = temp{1};
This handles M that are not multiples of 16 characters.
Note, though, that if M contains whitespace, that it will not split by 16 character groups, and would instead treat each "word" as the beginning of a section to be split.
  1 comentario
Younghun Kim
Younghun Kim el 12 de Jun. de 2020
thank you very much :)

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by