Saving data as binary

7 views (last 30 days)
Adel Hafri
Adel Hafri on 14 May 2022
Commented: Walter Roberson on 20 May 2022
Basically, i have for example k = [0 5 4], i want it to be saved as [0 101 100] instead of [00000000 00000101 00000100] so that it takes the least size possible, how can i do that ?

Answers (2)

Voss
Voss on 14 May 2022
k = [0 5 4];
arrayfun(@(x)dec2bin(x,max(1,ceil(log2(x)))),k,'UniformOutput',false)
ans = 1×3 cell array
{'0'} {'101'} {'100'}
  11 Comments
Walter Roberson
Walter Roberson on 20 May 2022
bits = {[1] [0 0] [1] [0 1 1] }
Bitstream = [bits{:}];
fid = fopen('test.bin','w');
fwrite(fid, Bitstream, 'bit1');
fclose(fid);

Sign in to comment.


Ilya Dikariev
Ilya Dikariev on 20 May 2022
k_new=str2num(dec2bin(k))' would do. But if you want to still reduce the the size, just use dec2bin which keeps the data in char type which is 8 times smaller
  1 Comment
Walter Roberson
Walter Roberson on 20 May 2022
Edited: Walter Roberson on 20 May 2022
only 4 times smaller. Each character needs 16 bits.
If you uint8(k_new) then that would need only one byte per value

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!