How to extract the fourth place of decimal of a number which is basically a flag-status?

2 visualizaciones (últimos 30 días)
I have a multicolumn datafile where the last coloun presents numbers like 3.2341, 2.3450, 1.2320, 8.9871. The fourth place of decimal is always either 1 or 0. If it is 1, it represents a certain flag to be 'ON', otherwise, it is 'OFF'. How to extract this flag information from these numbers?

Respuesta aceptada

Guillaume
Guillaume el 26 de En. de 2015
Read your datafile however you want (using textscan, or csvread, or dlmread, or readtable) into a matrix. For example,
m = cell2mat(textscan(fid, '%f %f %f %f')); %or whatever the format is
Multiply the last column of your matrix by 10000, round it just to be sure, and take the modulo with 2 and you get your flag:
m = [1 2 3 3.2341; 4 5 6 2.3450; 7 8 9 1.2320; 10 11 12 8.9871]; %for example
flag = mod(round(m(:, end) * 1e4), 2)
  2 comentarios
TP Das
TP Das el 13 de Feb. de 2015
I eventually solved this by converting the number to string.
Guillaume
Guillaume el 13 de Feb. de 2015
That's fine if speed is not critical. Converting to string is going to be a lot slower than just multiplication and modulo.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by