私がすでに尋ねた質問をフォローアップし、これが解決されたものから新しい問題が生じたという事実にもかかわらず、私の質問に対する答えが得られた限り解決しました:
Complex APIを使用する際の問題は、 NMatrix APIの shape メソッドを認識しないことです。
したがって、コンパイル済みの C 拡張機能で次の仕様コードを実行すると、次のようになります。
it "Creates a new FFTW.r2c object and takes an a 1D NMatrix as its argument" do
n = NMatrix.new([4], [3.10, 1.73, 1.04, 2.83])
r = FFTW.Z(n)
i = FFTW.Z(FFTW.r2c_one(r))
#expect(fftw).to eq(fftw)
end
shape は nmatrix クラスに属しているため、エラーが発生します。
FFTW Creates a new FFTW.r2c object and takes an a 1D NMatrix as its argument
Failure/Error: i = FFTW.Z(FFTW.r2c_one(r))
NoMethodError:
undefined method `shape' for NMatrix:Class
# ./spec/fftw_spec.rb:26:in `r2c_one'
# ./spec/fftw_spec.rb:26:in `block (2 levels) in <top (required)>'
Shape は nmatrix クラスから呼び出されるため、なぜこれが起こったのかは理解できますが、それを回避する方法はわかりません。
結果として
it "Creates a new FFTW.r2c object and takes an a 1D NMatrix as its argument" do
n = NMatrix.new([4], [3.10, 1.73, 1.04, 2.83])
fftw = FFTW.Z(n)
expect(fftw).to eq(fftw)
end
は
/home/magpie/.rvm/rubies/ruby-2.1.2/bin/ruby -I/home/magpie/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.0.4/lib:/home/magpie/.rvm/gems/ruby-2.1.2/gems/rspec-support-3.0.4/lib -S /home/magpie/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.0.4/exe/rspec ./spec/fftw_spec.rb
./lib/fftw/fftw.so found!
FFTW
creates an NMatrix object
Fills dense with individual assignments
Creates a new FFTW.r2c object and takes an a 1D NMatrix as its argument
Finished in 0.00091 seconds (files took 0.07199 seconds to load)
3 examples, 0 failures