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

2 vues (au cours des 30 derniers jours)
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?

Réponse acceptée

Guillaume
Guillaume le 26 Jan 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 commentaires
TP Das
TP Das le 13 Fév 2015
I eventually solved this by converting the number to string.
Guillaume
Guillaume le 13 Fév 2015
That's fine if speed is not critical. Converting to string is going to be a lot slower than just multiplication and modulo.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by