56 views (last 30 days)

Show older comments

Hi there,

I am trying to produce a text file of 16-bit binary to test a C program.

I can write to a file, but it writes to the file in scientific notation. I am basically after a file with about 2048 lines of 16-bit ones and zeros or alternatively, just in standard form as in: 32767 -32768 not 3.2767e -4

if that could be put in the form of

0000 0010 1100 1000

kind of data that would be even better. I can only get this far. I am using a sine wave to generate the numbers, and the data only need be approximate, as it is to test a C routine that takes data straight from a circuit.

x = 0:1:1024; y = 32767*sin(x); fid = fopen('data.txt','w'); writebytes(fid, '%5.0d\n',y); fclose(fid);

kind regards Rob

Walter Roberson
on 23 Nov 2019

if isa(TheNumber, 'uint8')

output = uint16(TheNumber);

elseif isa(TheNumber, 'int8')

output = typecast( int16(TheNumber), 'uint16');

else

output = typecast(TheNumber, 'uint16');

end

If the original number was more than 16 bits wide then output will be a vector of uint16 . It is not obvious what 16 bit number you would want output if the input was, for example, a double.

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

Start Hunting!