How to split this?

4 Ansichten (letzte 30 Tage)
Younghun Kim
Younghun Kim am 12 Jun. 2020
Kommentiert: Younghun Kim am 12 Jun. 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?

Akzeptierte Antwort

Monika Jaskolka
Monika Jaskolka am 12 Jun. 2020
Bearbeitet: Monika Jaskolka am 12 Jun. 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 Kommentar
Younghun Kim
Younghun Kim am 12 Jun. 2020
thank you very much :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Image Analyst
Image Analyst am 12 Jun. 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 Kommentare
Image Analyst
Image Analyst am 12 Jun. 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 am 12 Jun. 2020
thank you very much :)

Melden Sie sich an, um zu kommentieren.


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

Melden Sie sich an, um zu kommentieren.


Walter Roberson
Walter Roberson am 12 Jun. 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 Kommentar
Younghun Kim
Younghun Kim am 12 Jun. 2020
thank you very much :)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by