- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在用IDL把数据输出为txt时经常遇到宽度受限的情况,
比如:
IDL> openw,lun,'C:\Users\朽木\Desktop\456.txt',/get_lun
IDL> printf,lun,findgen(20,20)
IDL> close,/all
文件里是这样的:
再比如,
IDL> openw,lun,'C:\Users\朽木\Desktop\456.txt',/get_lun
IDL> printf,lun,indgen(20,20)
IDL> close,/all
文件里是这样的:
我以前一直以为限制列数,其实是因为我一直使用浮点型数据的缘故,
输出整型数组就变成了10列,可见并不是限制列数。
经我试验,把每行数组转为字符串就没有宽度限制了,代码如下,生成的没有宽度限制的B.txt见附件:
function txt,name,x
openw,lun,'C:\Users\朽木\Desktop\'+name+'.txt',/get_lun
printf,lun,x
close,/all
end
pro out
tic
A=[123.456789D,123.456789D,123.456789D,123.456789D,$
123.456789D,123.456789D,123.456789D,123.456789D,$
123.456789D,123.456789D,123.456789D,123.456789D]
; 语法:STRJOIN( String [, Delimiter])
B=strjoin(strtrim(string(a),2),',')
B=B+B+B+B+B+B
TXT=TXT('B',B)
toc
end
所以,完全可以写一个函数,把数据按字符串输出,
但可惜的是,输出数字的精度还是被自动截断了!
控制台中,
IDL> 123.456789
123.45679
IDL> 123.456789D
123.45678900000000
可见数字尾部加上双精度符号D就会完整精度输出,
但是你在脚本里写print,123.456789D,控制台却输出:
123.45679
看来,控制台和脚本还是有差异。
难道,为了输出完整精度,只能把各个数位的数字自己提取出来?我ca~~
|
-
-
B.txt
716 Bytes, 下载次数: 0, 下载积分: 金钱 -5
|