[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