Scilabで行列の内容を画像化する

Matlabにはimagescという行列の内容を簡単に画像化する素晴らしい関数がありますが、
Scilabで同様のことを行うには、Matplotを使います。
使いやすくするために下記の関数を書いてみました。


//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





//ret=Matplotsc(data,minmax,num)
//  data : スケールする行列
//  minmax : [min,max] スケールする最小値、最大値
//  num : カラーマップの段階数
//  ret : スケール化後の行列
function ret=Matplotsc(data,minmax,num)
    if argn(2)<2 then
        minmax=[min(data),max(data)];
    end
    if argn(2)<3 then
        num=32;
    end
    
    ret=(data-minmax(1))./(minmax(2)-minmax(1)).*(num-1)+1;
endfunction


使用例
x = linspace(0,1,81);
data = abs(cos(2*%pi*x)'*sin(2*%pi*x));
scdata=Matplotsc(data,[0 max(data)],128);
Matplot_with_axes(scdata,[0.1,0.1,3,3]);
f=gcf();
f.color_map=jetcolormap(128);
colorbar(0,max(data))

無題
スポンサーサイト

コメントの投稿

非公開コメント

全記事表示リンク

全ての記事を表示する

最新記事
最新コメント
最新トラックバック
カテゴリ
検索フォーム
RSSリンクの表示
リンク