スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Scilab 6.0で連続ウェーブレット返還


Scilabで連続ウェーブレット変換-9 (実データを解析)をScilab6.0で動かしたところ1点修正が必要でした。
Functionの仕様が微妙に変わったようで、戻り値の数が定義と違うとエラーになるようです。
これは、実は私のコードのミスで、戻り値を指定するのを忘れていただけです。

//行列の画像表示
//Matplot_with_axes(data,rect)
// data : 画像化する行列
// rect : [xmin,ymin,xmax,ymax] X軸、Y軸の最小値、最大値を指定(省略可)
function Matplot_with_axes(data,rect)
if argn(2)<2 then rect=[1,1,size(data,2),size(data,1)],end
rectx=(rect(3)-rect(1))/(size(data,2)-1)/2;
recty=(rect(4)-rect(2))/(size(data,1)-1)/2;
rect=[rect(1)-rectx,rect(2)-recty,rect(3)+rectx,rect(4)+recty];
Matplot1(data($:-1:1,:),rect);

ca = gca();
ca.data_bounds = matrix(rect,2,2)';
ca.tight_limits = "on";
ca.axes_visible = ["on" "on" "off"];
ca.axes_reverse = ["off" "on" "off"];
// ca.x_location="top";
endfunction

//データのウェーブレット解析
//cwt_matplot(time,data,scales,wname)
// time : 時系列リスト
// data : 解析するデータ
// scales : スケール係数
function coef=cwt_matplot(time,data,scales,wname)
//周波数の有効数字
sig_figs=3;

//連続ウェーブレット解析
coef=cwt(data,scales,wname);

//ウェーブレット係数を画像に変換
cmap_n=512;
cmap=jetcolormap(cmap_n);
n2=int(abs(coef)/max(abs(coef))*(cmap_n-1)+1);
f=gcf();f.color_map=cmap;
Matplot_with_axes(n2,[t(1),1,t($),size(scales,2)]);

xlabel("Time[s]");
ylabel("Frequency[Hz]");

//Y軸を変更する
scales_ticks=[1:2:size(scales,2)]'; //切りが良い数値のみ抜出し

a=gca(); //AXISを取得
yticks=a.y_ticks; //Y軸を取得
yticks.locations=scales_ticks; //位置を指定
freqs_=scal2frq(scales(scales_ticks)',wname,1/fs); //スケールを周波数に変換
//有効数字にまるめる
tmp_sig=10^(sig_figs-1);tmp=10^floor(log10(freqs_));freqs=(round(freqs_./tmp*tmp_sig)/tmp_sig).*tmp;
yticks.labels=string(freqs); //表示する内容を指定
a.y_ticks=yticks;

endfunction


//ウェーブレット関数
wname = 'cmor';

//サンプリング周波数
fs=100;

//データ読みこみ
fp=mopen("L3118A41.csv");
header=mgetl(fp,7);
data=mfscanf(-1,fp,"%f,%f,%f");
mclose(fp);
x=data(:,1);

//時間軸生成
t=(0:size(x(:),1)-1)'/100;


// スケーリング列
scales = 2^[2:1/8:9];

//表示
scf(0);clf;
coef=cwt_matplot(t,x,scales,wname);

//元グラフの時系列表示
scf(1);clf;
plot(t,x);
ca=gca();
ca.zoom_box=[t(1),-max(abs(x)),t($),max(abs(x))];



cwt_matplot
の定義のところだけ修正しました。

aaa.png

問題なく動きました。
Scilab6はメモリ管理が改善されたので大きなデータでも問題なく解析できるようになりました。
スポンサーサイト

Scilab6がリリース

ついにScilab6がリリースされました。
Scilab 6.0.0 Release

Yahoo!知恵袋で回答した質問まとめ3

Yahoo!知恵袋でひさびさに回答をしました。

scilabの画像処理についてです

Scilabで画像処理するのは実は初めてで、SIVPも初めてインストールしました。

もうすぐScilab6がリリース

Scilab 6.0.0-alpha 1 Release

Scilab 6.0.0 is a major new release of Scilab, the open source platform for numerical computation. This 6.0.0-alpha-1 release, is a preview for developers, partners and community evaluation.



もうすぐScilab6がリリースされます。現在アルファ版が配布されています。

変更点はかなり多いですが、個人的にうれしいのが、メモリ管理が改良された点です。
いままではスタックサイズが上限になっていましたが、Scilab6からは物理的なメモリ容量以外の制限はなくなります。
巨大なデータ(画像や動画、最近流行のビックデータなど)の取り扱いが楽になるでしょう。

Yahoo!知恵袋で回答した質問まとめ2


Yahoo!知恵袋で回答した質問まとめ に引き続きまして、時々回答しているので、まとめです。
最近は忙しくてあまり回答できてないです。


特定の範囲で乱数を作りたい
Scilabで重複を許さない乱数を生成したい
なぜか乱数の質問が続きました。


fsolve関数の中で使う変数を変えたい
変数スコープに関する質問。scilabのスコープはわかりにくいと思います。


スクロールで指定した時系列のポイントデータのみを表示したい
GUIについて。scilabでGUIをつくるのはそんなに難しいことではないです。簡単なものなら数行でできます。凝ったことはできないですが。



scilabは、行末にセミコロン( ; )が無いと、実行結果がコンソールにでてくる




plot3dで色の指定等オプションの記述








全記事表示リンク

全ての記事を表示する

最新記事
最新コメント
最新トラックバック
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。