[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000118] Re: reading binary files
��¼�Ǥ�.
��®�Τ��ֻ�, �ɤ��⤢�꤬�Ȥ��������ޤ�.
| ��������ˤ�
|
| tmp[i] = file_data.read(4).unpack('f')[0]
|
| �Ȥ�����ɤ��Ǥ��礦��
����Ϥ�����Ǥ���. ���ξ��,
file_data.read(4).unpack('f').type => Array
file_data.read(4).unpack('f')[0].type => Float
�ˤʤäƤ��ޤ���. ��ե���ˤ�����ȽƤ���ޤ���. NArray ��
�ɤ߹��ळ�Ȥ�, ���ʤ�®���ʤ�ޤ���.
| NArray �� ruby �� Array �ΤޤѾ����Ĥġ����ر黻�������Ⱥ������
| �Ԥä���ΤǤ�����������ʬ�Ϥ����äƤʤ��Τ� Array ��Ʊ���Ϥ��Ǥ�������
| �ơ����Τ褦�ˤʤäƤ��ޤ���ͳ�ϡ����դ�����ͤ������顼�Ǥʤ�Ĺ������
| ���������Ǥ��礦��NMDArray�Τۤ��ⶲ�餯�����Υǡ����ΰ�ˤ�
| [[1.0],[2.0],[3.0]] �����äƤ�������Ȼפ��ޤ�(p volt����Ф狼��ޤ�)��
NMDArray ������, [1.0, 2.0, 3.0] �ˤʤ�ޤ�. �����, NMDArray.rb ��
def []=(*idx)
.....
if rhs.is_a?(Array) then
if idxar.length < rhs.length then
raise(RuntimeError,"the array at rhs is too short")
end
for i in 0..idxar.length-1; @xxxxxx[idxar[i]]=rhs[i]; end
elsif rhs.is_a?(Numeric)
for i in 0..idxar.length-1; @xxxxxx[idxar[i]]=rhs; end
else
raise(RuntimeError,"invalid type: "+rhs.type.to_s)
end
�ȤʤäƤ��뤫��������Ȼפ��ޤ�.
| �ʤ���unpack('f') ��������֤��Ȥ������Ȥϡ��¤�ʣ���Ĥ���ư��������
| �ڤ�˽����Ǥ���ΤǤϤʤ��Ǥ���������ʤ���®���ʤ�Ϥ��Ǥ���
��������������̤��, ���ξ��ʤ�롼�פ���Ȥ�
tmp = file_data.read(4*nlon*nlat).unpack('f*')
volt[0..-1] = tmp
�Ȥ������Ū��ã���Ǥ��ޤ�.
----
Keep It Simple, Stupid.
Yuji Kitamura <kitamura@xxxxxx>
Dept. Earth & Planetary Physics, Graduate School of Science, Univ. of Tokyo