How to split this?

6 ビュー (過去 30 日間)
Younghun Kim
Younghun Kim 2020 年 6 月 12 日
コメント済み: Younghun Kim 2020 年 6 月 12 日
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?

採用された回答

Monika Jaskolka
Monika Jaskolka 2020 年 6 月 12 日
編集済み: Monika Jaskolka 2020 年 6 月 12 日
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 件のコメント
Younghun Kim
Younghun Kim 2020 年 6 月 12 日
thank you very much :)

サインインしてコメントする。

その他の回答 (3 件)

Image Analyst
Image Analyst 2020 年 6 月 12 日
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 件のコメント
Image Analyst
Image Analyst 2020 年 6 月 12 日
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 2020 年 6 月 12 日
thank you very much :)

サインインしてコメントする。


David Hill
David Hill 2020 年 6 月 12 日
You could make a matrix
newMatrix=reshape(M(1:floor(length(M)/16)*16),16,[])';
  1 件のコメント
Younghun Kim
Younghun Kim 2020 年 6 月 12 日
thank you very much :)

サインインしてコメントする。


Walter Roberson
Walter Roberson 2020 年 6 月 12 日
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 件のコメント
Younghun Kim
Younghun Kim 2020 年 6 月 12 日
thank you very much :)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by