2009年2月22日日曜日

PowerPoint 2007 と TeXclip

この記事の情報は古いです
TeXclipで作成した数式の再編集については


を参照してください.

2009年2月19日木曜日

MATLABで可観測正準形/可制御正準形

制御の教科書では必ず出てくる可観測正準形/可制御正準形ですが,数値計算上は大変扱いづらく,実際に数値的にこの形式にあえて変換することなんて試験かレポート以外ではあまりないと思います.
そのあたりの事情を反映してかMATLABにはこれらの形式に変換する関数というのは存在していないようです.
ctrbf/obsvfという関数があります.

しかしまぁ研究の都合上これらの正準形を計算したい場合もあるわけで,そんな場合に使うルーチンを作りました.1入力1出力の場合にしか使えません.1入力1出力の場合だと伝達関数形式に変換した時点でこれらの形式は単純に決まるわけですが,復習をかねて教科書的な方法で計算しています.

可観測正準形
function [ csys ] = obsvcanon(sys)
%OBSVCANON Compute observability canonical form

[n,d]=tfdata(tf(sys),'v');
W=hankel(fliplr(d(1:numel(d)-1)));
G=ss(sys);
U0=obsv(G);
S=W*U0;
csys=ss(S*G.a*inv(S),S*G.b,G.c*inv(S),G.d);

end


可制御正準形
function [ csys ] = ctrbcanon(sys)
%CTRBCANON Compute controllability canonical form

[n,d]=tfdata(tf(sys),'v');
W=hankel(fliplr(d(1:numel(d)-1)));
G=ss(sys);
UC=ctrb(G);
S=UC*W;
csys=ss(inv(S)*G.a*S,inv(S)*G.b,G.c*S,G.d);

end

ダウンロード

2009年2月2日月曜日

IEEEのLaTeX投稿用テンプレで紹介されてるスタイルファイル

IEEEの投稿用のクラスファイルについているテンプレート(リンク)に,推奨スタイルファイルが結構詳しく紹介されているのでメモ.
  • \usepackage{ifpdf}
    Heiko Oberdiek 氏の ifpdf.sty は,出力の種類(pdfかdviか)に応じて条件コンパイルを行う時に便利です.
    使い方:
    \ifpdf
    % pdf code
    \else
    % dvi code
    \fi

    ifpdf.styの最新版は,
    http://www.ctan.org/tex-archive/macros/latex/contrib/oberdiek/
    から入手できます.
  • \usepackage{cite}
    文献の参照を改良するスタイルファイルです.たとえば,[1], [9], [2], [7], [5], [6] は自動的に [1], [2], [5]--[7], [9]とかになります.あと,参照の直前の余白は自動的に調節されるらしいです.
    IEEEのクラスファイルはこれを使うことが前提でnatbib.styとは基本的に共存できませんが(何かオプション付けたらできるはず),他のところではnatbib.sty使うことの方が多い気がします.最新版は
    http://www.ctan.org/tex-archive/macros/latex/contrib/cite/
    から入手できます.
  • \usepackage[pdftex]{graphicx}
    \usepackage[dvips]{graphicx}
    \graphicspath{{../eps/}}
    言わずと知れた図を挿入するためのスタイルファイルです.日本では日本語の問題からかあんまりメジャーじゃないですけど,海外ではpdftexって結構使われてるんですね.
    密かに\graphicspathでパスを指定できるのは知らなかった・・
  • \usepackage[cmex10]{amsmath}
    定番のAMSの数式環境.cmex10とオプションを付けると,ビットマップフォントが組み込まれるのを防げるらしい.
  • \usepackage{algorithmic}
    アルゴリズムを書くためのalgorithmic環境を提供.今の自分の専門分野ではアルゴリズムを書くことはあんまりないですが,一度使ってみたいなぁ〜
    algorithmic.styのドキュメントと最新版は
    http://www.ctan.org/tex-archive/macros/latex/contrib/algorithms/
    に,サポートサイトは
    http://algorithms.berlios.de/index.html
    です.あと,より新しくてカスタムが可能なalgorithmicx.sty
    http://www.ctan.org/tex-archive/macros/latex/contrib/algorithmicx/
    もあるそうです.
  • \usepackage{array}
    LaTeX2eの標準的なarrayとtabular環境を改善して,よりよい見た目と出力の制御を実現するものらしいです.「標準での表の出力はひどいから,とりあえず入れとけ.」という感じで紹介されています.次から使おう・・・
    大抵のシステムにデフォルトでインストールされていますが,最新版は
    http://www.ctan.org/tex-archive/macros/latex/required/tools/
    で入手できます.
  • \usepackage{mdwmath}
    \usepackage{mdwtab}

    これらは Mark Wooding さんによるMDW tools の一部です.
    他にも色々なツールを提案されているようです.
    http://www.ctan.org/tex-archive/help/Catalogue/entries/mdwtools.html
    ざっと見た中ではsyntax.styのgrammer環境が目を引きます.

    (↑の図はドキュメントから抜粋したものです)
    こんな感じのコンピュータ言語の文法を記述できるようです.
    いつかは自分言語の文法を書くようなことをしてみたい・・・
  • \usepackage{eqparbox}
    自動的に同じ幅に調整されるボックスを実現するパッケージです.TeXで同じ幅の表を作ったりする作業は地味にめんどうですが,これを使えばスマート(?)に実現できます.
    他にも通常は揃えにくい場所の位置や長さを揃えることができそうです.単純な原理でありながら応用範囲の広い秀逸なパッケージですね.
    入手先はhttp://www.ctan.org/tex-archive/macros/latex/contrib/eqparbox/です.
  • \usepackage[caption=false]{caption}
    \usepackage[font=footnotesize]{subfig}
    subfig.styはsubfigure.styをより現代的にしたものらしいです.今までずっとsubfigure.styだったので次から使ってみます.もともとsubfigureを使いこなせてないので差はよくわかりませんが,従来の\subfigureに代えて\subfloatコマンドが提供されています.これは図だけでなく表にも適用できて,Figure 7(a)みたいにsubfigure を直接参照したり,図目次に subfigure の Caption を入れられたり, Caption の見た目を色々制御したりできるみたいです.
    ちなみにsubfig.styはcaption.styに依存していて自動で読み込みます.そのため IEEEtran.clsのcaption周りと衝突するらしく,IEEE用の原稿では上のような並びで使います.ダウンロードは
    http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/
    から.
    ※ 日本語を使っているとき,タイトル等の書式設定がおかしくなる問題が発生する事があるようですが, caption.sty を最新版に置き換えることで解決するようです,
  • \usepackage{fixltx2e}
    LaTeX2e の問題点を修正するパッケージです.例えば,2つのカラムに及ぶ図と1カラムの図が混在したときに,それらの順序が入れ替わることがある問題とかが修正されるます.次から使ってみます・・・.最新版とドキュメントは
    http://www.ctan.org/tex-archive/macros/latex/base/
    から.
  • \usepackage{stfloats}
    二段組みの文書で二段使う図を,ページ下に配置することができるようになったりするパッケージです.float周りをごっそり書き換えるので他のパッケージと共存できないことが多いらしい・・・あんまり使う機会はないかも??
    ドキュメントと最新版は
    http://www.ctan.org/tex-archive/macros/latex/contrib/sttools/
    から.
  • \usepackage{endfloat}
    IEEEtran.cls を captionoff オプションで使うタイプの文書で便利らしい.今のところそういう流儀の雑誌と縁遠いかなぁ・・・必要な時が来たら調べます.最新版とドキュメントは
    http://www.ctan.org/tex-archive/macros/latex/contrib/endfloat/
    から.
  • \usepackage{url}
    URL をかしこく扱うためのスタイルファイルです.改行する場所とかも改善するらしい.これは結構使いますね.ほとんどの場合デフォルトで入ってますが,最新版は
    http://www.ctan.org/tex-archive/macros/latex/contrib/misc/
    から.
実は今までTeXファイルの受け渡し時のトラブルもあって,スタイルファイルを使うのを敬遠していたのですが,標準的に入っているのも多いみたいだし,今後はちょくちょく使うことにします.

2009年1月16日金曜日

MATLABのグラフに目盛りを追加

MATLABでグラフを作るとき,自動でつく目盛り以外に特定の値の目盛りがほしい場合があります.真値のところに目盛りがほしいとか収束先のところに目盛りがほしいとかそんなときです.

じつはこれをプログラムからやるのは結構面倒だったりします.
なので専用の関数を作ってみました.

こんなグラフに
>> addxtick(2/pi)
とすると

こんな風に目盛りがつきます.
ラベルもいじりたいときは
>> addxtick(pi/2,'pi/2')
と入れれば

となります.便利ですよ.
短いプログラムなのでコピーしてaddxtick.mという名前で保存して使ってください.

function [] = addxtick( tk, tklbl )
%ADDXTICK --- Add new tick to x-axis
%   Ex.    addxtick(3.14)
%   Ex2.  addxtick(3.14, 'Pi')

if nargin==1
    set(gca,'XTick',unique(sort([get(gca,'XTick'), tk ] )));
else
    temp = cellstr(get(gca,'XTickLabel'));
    temp = {temp{:},tklbl};
    [temp2,idx] = sort([get(gca,'XTick'),tk]);
    [temp2,idx2]=unique(temp2);
    idx=idx(idx2);
    set(gca,'XTick',temp2);
    set(gca,'XTickLabel',temp(idx));   
end

end
あと,ほとんど同じですがaddytick.mも置いておきます.
function [] = addytick( tk, tklbl )
%ADDYTICK --- Add new tick to y-axis
%   Ex.    addytick(3.14)
%   Ex2.  addytick(3.14, 'Pi')

if nargin==1
    set(gca,'YTick',unique(sort([get(gca,'YTick'), tk ] )));
else
    temp = cellstr(get(gca,'YTickLabel'));
    temp = {temp{:},tklbl};
    [temp2,idx] = sort([get(gca,'YTick'),tk]);
    [temp2,idx2]=unique(temp2);
    idx=idx(idx2);
    set(gca,'YTick',temp2);
    set(gca,'YTickLabel',temp(idx));   
end

end

2009年1月15日木曜日

三叉ヘビ型ロボットの製作

三叉ヘビ型ロボットというおもしろい構造のロボットが
杉江研の石川先生たちによって研究されています。
僕は研究に深く関わっているわけではありませんが、とてもいい動きをするロボットなので一度作ってみたいと思っていました。研究室には一応理論を検証するための機械がありますが、データを取ったり精度を確保するためにそれなりに大がかりな装置になっています。

今回は、より単純に三叉の動きを楽しむために、小型で小回りの良いロボットを製作してみました。
以下製作記録です。
デモ用のプログラムを書き込んで動作

いつもより多めにまわってます。
学部生の勧誘で本部に出張する時とかに役立てる予定。

2008年11月28日金曜日

xPC Target で CNT24-4D(PCI)H を使う

大学のMATLABのライセンスが統合された関係で,xPC Targetが使えるようになりました.研究室は古いPCがあまりがちなので,これを実験機に回せば安上がりにラピッドプロトタイピングな環境を構築できそうです.

しかし,xPC Targetに対応してるIOボードというのは意外と少なくて
に列挙されてるやつだけです.しかも互換品で型番が違うだけみたいなボードもPCIボードの VendorID / DeviceID で完全にはじいてしまうようです.研究室にあるContecのボードのいくつかは上のリストに挙げられてるんですが,エンコーダ用のカウンタは,すでに廃品種の CNT24-4D(PCI) しか対応して無くて研究室にある現行の CNT24-4D(PCI)H はDeviceIDが違うので認識されません.

幸いなことに xPC Target の IOボードのドライバのコードは書き換えることが出来て,mexなコンパイラの設定をすれば(とりあえず Visual C++ 2008 Express editionが使えた・・)コンパイルして使うことが出来ます.

とりあえず,CNT24-4D(PCI)Hに関してはCNT24-4D(PCI)用のソースの簡単な書き換えだけで対応できることを確認しました.二慣性共振系の実験装置に早速つないで使ってみましたがなかなかいい感じです.実験は本業じゃないし,簡単に実験できるのはいいことですね〜

実は研究室には Interface社のボードの方が多いので,ドライバを書いて使えるようにしたいところです.DAとADくらいならドライバを書くのもそんなに難しくなさそうですしね.というかInterfaceさんが出してくれたりしないかなぁ・・

2008年9月29日月曜日

六足歩行機構

昔作ったものをあさってたら六足歩行機構が出てきました.
ブログのタイトルのところにあるアニメーションのような機構で,モーター1つで歩いてるような動きが出来ます.

完成図
実際の動作の様子