MATLAB Answers

changing exponential value into float

5 views (last 30 days)
Sajitha K.N.
Sajitha K.N. on 31 Jan 2020
Commented: Walter Roberson on 2 Feb 2020
I normalized 'area' data between zero and one. Then I write that values into xl sheet. But many values are exponential. I want to change that exponential values to float type. Please somebody help.
This is my code:
max_Ar=max(Ar);
min_Ar=min(Ar);
range=(max_Ar-min_Ar)+ eps(max_Ar-min_Ar);
for i=1:100
Area(i)=(Ar(i)-(min_Ar - eps(max_Ar-min_Ar)))/range;
ex = 10^(3-floor(log10(Area(i))));
Area(i)= round(Area(i) * ex) / ex;
end
xlswrite('Tomato_Yellow_Leaf_Curl_Virus.xlsx',Ar(:))
xlswrite('Tomato_Yellow_Leaf_Curl_Virus1.xlsx',Area(:))

  4 Comments

Show 1 older comment
Sajitha K.N.
Sajitha K.N. on 1 Feb 2020
No I want values between 0 and 1.
Walter Roberson
Walter Roberson on 1 Feb 2020
You did not answer my questions.
Sajitha K.N.
Sajitha K.N. on 1 Feb 2020
I want to just change it to have as many leading or trailing zeroes as needed.

Sign in to comment.

Answers (2)

Subhadeep Koley
Subhadeep Koley on 1 Feb 2020
Hi Sajitha, Try the code below.
clc;
max_Ar = max(Ar);
min_Ar = min(Ar);
range = (max_Ar - min_Ar) + eps(max_Ar - min_Ar);
for i = 1:100
Area(i) = (Ar(i) - (min_Ar - eps(max_Ar-min_Ar))) / range;
ex = 10^(3-floor(log10(Area(i))));
Area(i) = round(Area(i) * ex) / ex;
Area(i) = str2double(sprintf('%f', Area(i)));
Ar(i) = str2double(sprintf('%f', Ar(i)));
end
xlswrite('Tomato_Yellow_Leaf_Curl_Virus.xlsx', double(Ar(:)));
xlswrite('Tomato_Yellow_Leaf_Curl_Virus1.xlsx', double(Area(:)));

  0 Comments

Sign in to comment.


Walter Roberson
Walter Roberson on 1 Feb 2020
Edited: Walter Roberson on 1 Feb 2020
dlmwrite with a precision of '%.1074f' should handle all of the cases.
Possibly with the processing you are doing you might be able to use a considerably smaller number than 1074. 1074 is needed for eps(realmin)

  2 Comments

Sajitha K.N.
Sajitha K.N. on 2 Feb 2020
My dataset is very big one. Is this code slow down the process?
Walter Roberson
Walter Roberson on 2 Feb 2020
Yes. Conversion of binary to characters is done in software, not in hardware. The more digits you convert, the more time it takes the software.
File i/o time mostly depends on the number of full blocks of data to be written; when you write more characters then it is going to take more time.

Sign in to comment.


Translated by