changing exponential value into float
Mostra commenti meno recenti
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 Commenti
Walter Roberson
il 31 Gen 2020
If for example one entry was 1.23e-8 then what float would you want? Do you want to just change it to have as many leading or trailing zeroes as needed, or do you want to round numbers with abs() value less than something to be 0?
Sajitha K.N.
il 1 Feb 2020
Walter Roberson
il 1 Feb 2020
You did not answer my questions.
Sajitha K.N.
il 1 Feb 2020
Risposte (2)
Subhadeep Koley
il 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(:)));
Walter Roberson
il 1 Feb 2020
Modificato: Walter Roberson
il 1 Feb 2020
0 voti
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 Commenti
Sajitha K.N.
il 2 Feb 2020
Walter Roberson
il 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.
Categorie
Scopri di più su Logical in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!