MATLAB: Split binary number into individual bytes

fileMATLABtext file

Hello,
I want to convert a list of binary numbers into 3 different numbers. Each binary number is of 21 bits and I want to convert it into 3 sets of [22:12 11:1 0].
Example is shown below.
00111001110101000101011 => 00111001110 10100010101 1
Below is a sample of the file
00111001110101000101011
00111001110101000101001
00111001110101000100111
00111001110101000100101
00111001101101000100011
00111001101101000100001
00111001101101000011111
00111001101101000011101
00111001101101000011011
00111001101101000011001
I have used the following approach but to no avail as it keeps reading data in double format.
close all
clear all
clc
load D:\Folder\File.txt
dataorig=File;
N=length(dataorig)
finalMat=ones(N,3);
datastr=string(dataorig);
temp=char(datastr(1))
num1=temp(1:11)

Best Answer

This approach save the result in a cell array:
fid = fopen('File.txt');
data = textscan(fid,'%s');
fclose(fid);
dataNew = cellfun(@myfun,data{1,1},'UniformOutput',false);
dataNew = vertcat(dataNew{:});
%To save in a new file
fid = fopen('example.txt','w');
dataNew = dataNew';
fprintf(fid,'%s\t%s\t%s\r\n',dataNew{:});
fclose(fid);
function b = myfun(a)
a = flip(a);
b = {a(1:11),a(12:22),a(end)};
end
Related Question