scilab

祝ver6登場

Scilab6がやっと出てきた。残念ながらまだ試せていない。

Scilab6 ベータ1を試した

さすがにアルファ版を試す気には成らなかったが、ベータ版なら良いかと人柱機に入れてみた。少し触っただけだが、スタックサイズの記述でエラーになったが、そこを無効にしたら既存のコードは動いた。FFTとかフィルタ等の関数を使ったコードは試していない。…

以前作ったコードが動かない

XCOSで以前作ったコードが5.4.1で動かない。XCOSは伝達関数のプログラムチェックの為のテストデータ作成用にバネマス系モデルの作成に使って以来触っていないが、それでも5.3.1のバージョンの時に作った代物だ。5.5β1だと動くが、XCOSのコード自体がおかしく…

Scilab5.5B1が出てた

5.5か、最終リリースは今年末予定。5.4のあとはメジャーアップデートの6.0かと思っていたが。

シェルフフィルタ(ブーストフィルタ)

バタワースフィルタだと減衰の傾きが-6dB/Octで落ちていくのだけど、ピンクノイズのような-3dB/Octの傾きはどうやって実現するのかというと、ハイシェルフフィルタ(ハイブーストフィルタ)を何段か通して上げてしまうらしい。周波数に比例して上げるのではな…

連続ウェーブレット変換の擬似周波数

以前の日記で1Hz刻みでスケールファクタを変える方法を書いたが間違っていた。多分、今回は合ってると思う。 前回はスケールパラメータa=サンプリング周波数/(6×ピークのHz)としていたが、 正しくは、スケールパラメータa=サンプリング周波数/(2☓π×ピークのH…

フラットトップ窓

先週仕事で使ったので、Scilabでも試してみようかと思い作ってみた。参考にしたのはLabviewのマニュアルで、小野測器のHPにあるものとは若干違うらしい。フラットトップ窓は周波数分解能を犠牲にして振幅値の正確さに重点を置いた窓。 実際に試してみた。中…

久しぶりにscilabネタ

一時に比べると明らかにリリース間隔が長くなったが、そろそろ5.4の正式版も近そうだ。

音響残響指標を計算させてみる2

前回のデータを、とあるソフトで結果を得たので比較してみた。そう言えば前回はC80,D50はオールパスから出すと書いたが、これもオクターブ毎に出していた。 結果は、やはり低帯域はフィルターの特性の違いが大きく出るので差が出る傾向がある。ノイズが無い…

音響残響指標を計算させてみる

客先で残響指標のデータ整理することがある。頻度はそう多くは無いので後回しにして来たが、ある程度仕事で使うプログラムは作ったので、自分でも作って見ることにする。 屋内の残響インパルス応答のデータはネットで探して見つけて来た。実際の建物で得たデ…

任意点補間コンターマップを試す

格子状のデータ行列からコンターマップを描くのは知っていたけど、今度は格子状ではないデータ行列からコンターマップを描く。調べてみるとcshep2dとeval_cshep2dという関数を使って出来る。とりあえず4×4のデータ点を作ってみる。x=1,2,3,4、y=1,2,3,4の格…

デジタルフィルタの桁落ち

デジタルフィルタはアナログフィルタのコンデンサや抵抗を数値化した係数にて巡回か非巡回して時間軸上で畳み込む訳だけど、サンプリング周波数が通過帯域よりかなり大きいと不都合が起きる。フィルタ係数の変数はプログラム上で有効桁数が決まっているので…

Scilab xcosで騒音レベル波形を描かせる

騒音レベル波形は生波形にA特性感覚補正をかけて時定数をかけるのだが、行っている事は1次のIIRフィルタを何度もかけているだけに過ぎない。アスキーファイルを読み込むブロックとグラフのブロックの間のごちゃごちゃしたのがその部分だが、A特性感覚補正は…

Scilab xcosでアスキーファイルを読み込む

私の仕事は現象をデータレコーダに収録して分析を行うので、xcosで使うにはデータのファイルを読み込まないと話にならない。単にファイルを開いてグラフに描かせるのが以下のブロック。こんな単純なブロックで躓いたのがやはりファイルを読み込むところで、c…

Scilab xcosを使う理由

Scilab本体でプログラムしたほうが簡単に出来て、xcosにはFFTなどのブロックが無いなどのハンデがあるにも関わらずxcosも使おうとするのは、ファイルを読み込むブロックで確認したがメモリの消費が余り無い事だ。もっとも試したのは48kHzサンプリングで1分程…

Windows版とLinux版では、同じ32bit OS環境でも扱える配列のサイズが違う。

元々windows OSのメモリ管理については疑問だった。メモリを2GB積んでいても200MBぐらいの異なるエクセルファイルを2つ同時に開けない場合がある(メモリが無いと言われる)。それでいてタスクマネージャーを見る限りメモリはそんなに使っていない。OSの問題で…

ファイルから1行ずつ読みたい場合

stacksize("max")でメモリを最大限確保した上で、Scilabの32bit環境だとrand(1,48000*60*13);だと通り、13を14にするとスタックサイズを超えてしまう。つまり48kHzサンプリングで13分位の配列ということになる。64bit環境では60分ちょっとだった。もしこれに…

音声周波数成分のカラーマッピング

音声周波数成分を時間ごとに分析する方法としては短時間FFTやウエーブレット変換があるけど、今回作ってみたのは短時間FFTの方。Scilabが関数で持っているのは窓関数もかけないが、当然自分で作った方はハニング窓をかけている。まあ、作ったと言っても1秒毎…

双一次z変換でバターワース特性4次のハイパスフィルタを作る。

デジタルフィルタには色々ある (1)IIRフィルタ (2)FIRフィルタ (3)FFTフィルタ主にどんなものか(間違っている可能性有り) IIRフィルタは主に実際の機器に使われている(と思う)。抵抗やコンデンサの組み合わせで実現し、プログラムで実現する場合はそれらの特…

Scilabで地震の震度を計算する

地震の震度は単にその加速度の大きさで決めるのかと思っていたら、決められたフィルターを通した上に計算式を使って出す必要がある。会社で作ってと言われたので、Scilabで作ってみた。 決められた周波数特性になるように窓を作成し、地震波形をフーリエ変換…

A weigt 補正

今までscilabでは、A特性レスポンスの周波数特性を逆FFTをかけてフィルタ係数にし、畳み込みを使用して波形データにA特性を適用するプログラムは作っていたのだが、もう少しスマートに出来ないものかと考えてみた。 先ずはエクセル上でシミュレートしてみる…

intdec関数

波形データを間引く際にローパスフィルターをかけないとエイリアシングが生じるのだけどintdec関数で1行で出来た事が判った。matlabだとdecimateという関数だ。 ただ、matlabみたいにfiltfit関数を使用して位相遅れを補正する事は行っていないようだ。

Scilab 5.2が登場

待望の日本語対応だ。メニューや表示に日本語が出るだけでなく、実行ファイルへのパスに日本語が混じっていても大丈夫だ。ただ、変数には日本語は使えないようだ。以前のバージョンでは本体ファイルの他にFFTライブラリなど他のインストールファイルが在った…

振動の1/3オクターブ分析がうまくいかない

振動の1/3オクターブだと低い方は1Hzよりも狭い帯域しかない。通過してきた波形がかなり小さくなって出てきてしまう。FFTフィルタならいけるかと思い組んでみたが、駄目だった。FFTフィルタの結果は、同じ方式を使うOriginと比較してもほぼ同じになるので、…

Scilabでウエーブレット解析

FFTやフィルタと違って余り情報は無いが、どなたかのBlogの情報をそのまんま実行してScilabでウエーブレット解析が出来た事は確認。パラメータとかの情報を知りたいが、そこまで載っていなかった。

アンチエイリアシングフィルター

マトリックスに強いscilabならではというか、1行でデータの間引きが出来るのだから楽なものだ。だいたい自分でscilabで行いたい事は出来た。そう言えば部長に言われていたウエーブレットは未だだったか。でもウエーブレットなんて自分の今までの仕事では使っ…

講座その5 データ長とフーリエ変換の関係

フーリエ変換のデータ長を2の階乗に限定する事でバタフライ演算によって処理速度を早めたのが、高速フーリエ変換(FFT)です。 scilabでこれがどのように違ってくるかと言うと。 2048点だと0.84secで終わる処理が、2049点にすると1.17secと、遅くなるのが判り…

scilab講座その4 成分やトレンド成分の除去

FFT等の分析をして時系列データを周波数データに変換する際に、レコーダー側の問題等で元データにDC成分やトレンド成分が載る場合があります。 3段の上はDC成分やトレンド成分が無い時系列波形とそのFFT結果で、中段がトレンド成分が載り、下段がトレンド除…

関数を作る

scilabで今までsceファイルの中にコマンドを書いて実行していたのを、それらの処理を関数で定義してsciファイルにして、あくまでパラメーター等をsceファイルで与えて実行させるようにした。 こうすればsciファイルの中を開ける必要は無く、また複数のバッチ…

scilab講座その3 弾道計算をしてみる

waveファイルを時系列表示させたり、それをFFTして周波数軸表示させたりしたのが続くと、scilabが波形処理ソフトと思われかねないので、もっと身近な計算も出来る一例として、弾道計算をしてみます。弾道計算と言ってもそんなおおげさなものではなく、物を投…