[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002330] NArrayMiss
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002330] NArrayMiss
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 16 Jun 2005 23:00:14 +0900
西澤さま
竹広さんとのやりとりとは独立なんですが,
NArrayMiss に関しちょっと気づいた点がありまして,
以下お願いできないでしょうか.
* to_nam / to_nam_no_dup で NArray かどうかの判断を
class == NArray でなく,is_a? 関係でやって欲しいです.
NArray には NMatrix とか NArrayScalar などのサブクラスが
あるので.たぶん,サブクラスでも問題ないことが多いんでは?
この件は,簡単なので現在のcvs版に対するパッチを末尾につけます.
* 長さの違う NArrayMiss どうしの2項演算第一項めのほうが短い場合
うまく行きません.ちょっとみたのですが,どうすればいいか良く分
からなかったので,すみませんが対応して頂けると嬉しいです.以下,
例です(cvs版利用).
% irb --simple-prompt
>> require "narray_miss"
=> true
>> na = NArray.sfloat(2,1).indgen!(10,10)
=> NArray.sfloat(2,1):
[ [ 10.0, 20.0 ] ]
>> nb = NArray.sfloat(2,2).indgen!
=> NArray.sfloat(2,2):
[ [ 0.0, 1.0 ],
[ 2.0, 3.0 ] ]
>> na+nb
=> NArray.sfloat(2,2):
[ [ 10.0, 21.0 ],
[ 12.0, 23.0 ] ]
>> nb+na
=> NArray.sfloat(2,2):
[ [ 10.0, 21.0 ],
[ 12.0, 23.0 ] ]
>> nam = NArrayMiss.to_nam(na)
=> NArrayMiss.sfloat(2,1):
[ [ 10.0, 20.0 ] ]
>> nbm = NArrayMiss.to_nam(nb)
=> NArrayMiss.sfloat(2,2):
[ [ 0.0, 1.0 ],
[ 2.0, 3.0 ] ]
>> nbm+nam
=> NArrayMiss.sfloat(2,2):
[ [ 10.0, 21.0 ],
[ 12.0, 23.0 ] ]
>> nam+nbm
TypeError: self.size(=4) != mask.size(=2)
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `[]='
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `set_without_validation'
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:1321:in `routine2'
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:394:in `+'
from (irb):9
>> nc = NArray.sfloat(1).fill!(100)
=> NArray.sfloat(1):
[ 100.0 ]
>> ncm = NArrayMiss.to_nam(nc)
=> NArrayMiss.sfloat(1):
[ 100.0 ]
>> nc + nb
=> NArray.sfloat(2,2):
[ [ 100.0, 101.0 ],
[ 102.0, 103.0 ] ]
>> ncm + nbm
TypeError: self.size(=4) != mask.size(=1)
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `[]='
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `set_without_validation'
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:1321:in `routine2'
from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:394:in `+'
from (irb):8
# しかし,なんでタイプエラー?
毎度すみませんが,よろしくお願い致します.
堀之内
---- diff -u narray_miss.rb~ narray_miss.rb で作ったパッチ (ここから)----
--- narray_miss.rb~ Thu May 26 15:14:47 2005
+++ narray_miss.rb Thu Jun 16 22:17:09 2005
@@ -167,7 +167,7 @@
array = arg[0]
if Numeric===array then array = NArray[array] end
if array.class == Array then array = NArray.to_na(array) end
- if array.class != NArray then
+ if !array.is_a?(NArray) then
raise("argument must be Numeric, NArray or Array")
end
@@ -195,7 +195,7 @@
__new__(array,mask)
end
def self.to_nam(*arg)
- if !(Numeric===arg[0]) && arg[0].class!=Array && arg[0].class!=NArray
+ if !(Numeric===arg[0]) && arg[0].class!=Array && !arg[0].is_a?(NArray)
raise "first argument must be Numeric, NArray or Array"
end
arg[0] = arg[0].dup if !(Numeric===arg[0])
---- diff -u narray_miss.rb~ narray_miss.rb で作ったパッチ (ここまで)----