2011.01.15 17:13, Laimis rašė:
> Pirmas įspūdis, kad Matlab'e taškas „įsiūtas“, tačiau galima išspręsti
> bent jau trejopai:
na taip.
Numeric Format Uses C Locale
MATLAB software reads the user locale for all categories except for the
LC_NUMERIC category. This category controls numeric data formatting and
parsing. MATLAB always sets LC_NUMERIC to the C locale.
For example, some users expect a comma in a number while other users
expect a decimal. The value of pi can be displayed as 3.1415 or 3,1415,
depending on the format used by a locale. MATLAB always uses 3.1415,
regardless of the format specified by the user locale.
> 1) matlab'e:
> str = sprintf('%f', x)
> str = strrep(str, '.', ',');
> fprintf(fout, '%s...', str, ...);
vėl hardcod'inimas, tik į kitą pusę. Ir nematau MatLAB'e galimybės gauti
lokalės nustatymus perdaug neprogramuojant.
> 2) sed, awk (priklausomai nuo to ar galima tiesmukiškai keisti visus
> stulpelius, t.y. ar nėra tekstinių/datos stulpelių, kuriuose galėtų būti
> taškai/kableliai):
> sed -i.orig -e 's/\./\,/g' file.csv
taškų yra. Ten pat keliauja ir failo pavadinimas. Duomenų bloko pvz:
Image file: boat.tif
Number of annotations: 3
Compression ratio PSNR IW-SSIM MS-SIM
25:1 30.97080640 0.95892116 0.82229477
50:1 28.08768011 0.91135464 0.73522102
100:1 25.98833437 0.83791356 0.66173827
150:1 24.75599627 0.78497023 0.61283422
200:1 24.07390819 0.74987019 0.58906882
> 3) OO Calc importuojant CSV turbūt galima pasirinkti kalbą ir pažymėti
> „detect special numbers“. Neturiu po ranka ir negaliu patikrinti, tačiau
> nustatčius atitinkamą kalbą, turėtų traktuoti taškus, kaip decimal
> separatorius, o po importo, lape, pagal logiką, turėtų gautis kableliai
> (pagal OO/sistemos lokalės nuostatas).
tas kažkiek veikia (bent jau RC7), bet bevelyčiau atspausti duomenis
taip, kad nereiktų jokių šamanizmų juos toliau naudojant.
Kitas variantas - pasirašyti 'odswrite' ;)
--
ejs