On Fri, 10 Apr 2020 at
01:47, José Luis García Pallero < address@hidden>
wrote:
Hello,
I've noted that the function str2double() only works with
exponent
identifier as 'e' or 'E', but not with 'd' or 'D', that
are common
identifiers in files generated using Fortran. Then
str2double('1e2') is 100, but
str2double('1d2') is NaN
This behavior is the same in Octave as well as Matlab.
Exists any
technical reason in order to not consider the identifiers
'd' or 'D'
for the conversion of the reason of the Octave's behavior
is for
matching the Matlab's one?
I find str2double() more convenient in a task than
str2num() as the
first one is faster, but my dataset uses 'D' as exponent
identifier
str2double is a compiled function, but str2num uses
eval which will be a lot slower as you say.
You would almost certainly find it faster to first
replace 'd' with 'e'. e.g.:
function d= mystr2double(d)
d(d == 'd')='e';
d = str2double(d);
endfunction
Cheers... Ian
This was my first thought as well. We would want to introduce a new
feature in to Octave, and an incompatibility with Matlab, only
generally when it is clearly useful, would benefit many users, and
can't be accomplished in any other manner. This feels like a
feature that would benefit a small number of users and for which
there are abundant workarounds. Ian proposed a solution within
Octave. Outside of Octave you could use the search and replace
feature of a standard text editor. Or if you are on a Linux system
then
sed -e 's/d/e/g' FILENAME > NEW_FILENAME
--Rik
|