雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2006-06-29

[]びっくり びっくり - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - びっくり - 雲雀は高く空を舞い びっくり - 雲雀は高く空を舞い のブックマークコメント

二週間近く書いていなかったのかと吃驚。おうぃぇ。

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060629

2006-06-16

[]カラーコーディング カラーコーディング - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - カラーコーディング - 雲雀は高く空を舞い カラーコーディング - 雲雀は高く空を舞い のブックマークコメント

はてなグループにおけるスーパーpre記法の拡張について - はてなグループ日記 - 機能変更、お知らせなどより

「はてなスーパーpre記法」が拡張されて自動で色がつくようになった。matlabにも対応していて、うん、便利…と思ったら色合いが。文字列、コメント、ファンクションなど。styleタグとか見るとkwikiとかの機能からなのかな?英語も勉強しなくちゃ。

[]じゃあfevalってどうなのよ。 じゃあfevalってどうなのよ。 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - じゃあfevalってどうなのよ。 - 雲雀は高く空を舞い じゃあfevalってどうなのよ。 - 雲雀は高く空を舞い のブックマークコメント

no titleより

昨日」の続き。以前まではfevalは関数ハンドルを評価する唯一の方法だったけど、R14からはそんなことなくなってるから、別に使わなくても良いんじゃね?だそうだ。

関数ハンドルわかんね。

以前の書き方

function y = halfcircle(fun,n)
if nargin < 2
	n = 20;
end

y = feval(fun, 0:pi/n:pi);
ys = halfcircle(@sin);
yc = halfcircle(@cos);

R14以降

function y = halfcircle(fh,n)
if nargin < 2
	n = 20;
end

y = fh(0:pi/n:pi);
ys = halfcircle(@sin);
yc = halfcircle(@cos);

だけど

fevalを使うとただの文字列だって関数として評価できる。

fn = 'sin';
y = feval(fn, 0:pi/3:pi);

まぁそんな感じ。

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060616

2006-06-15

[]evalは使うべきではない evalは使うべきではない - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - evalは使うべきではない - 雲雀は高く空を舞い evalは使うべきではない - 雲雀は高く空を舞い のブックマークコメント

no titleより

eval を使うべきでない理由

eval は Code Clarity / Readability, Efficiency, Analyzability の点から使うべきでは無い。

eval を使った文は読みづらく、流れを追いにくい。そのため解析もしづらくなる。

また、Matlab ではコードを実行する際に、コードを内部コードに変換してから実行する。再度コードが実行される際、コードになんの変更もなかった場合その変換作業は省かれる。しかし、文中でevalが使用されていた場合は、同一性が保証されないため、毎回変換作業が必要となり、そのために効率性に欠ける。

evalを避けるテクニック

functional formってのはスペースでコマンドを分けるのでは無く()を使えってことかな。

例えば

a) save mydata.mat x y z
b) save('mydata.mat',x,y,z)

a)でなくb)と書く、とか。a)の場合はsaveに続くものがすべて文字列扱いされてしまうけどb)の場合はそうではないから柔軟な書き方が可能である、ってことか。

str2funcは文字列を引数に、その関数ハンドルを出力するみたい。関数ハンドルはよく分からない。

str2func

目的

関数名文字列から関数ハンドルを作成

表示

fhandle = str2func('str')

詳細

str2func('str') は、文字列 'str'の中で名付けられた関数に対して、関数ハンドル fhandleを作成します。

@function シンタックス、または、コマンドstr2func のいずれかを使って、関数ハンドルを作成できます。 この演算を文字列のセル配列に適用することもできます。 この場合、関数ハンドルの配列が戻されます。

また、続く「no title」では構造体を使え、と述べている。fieldnamesと、動的フィールド参照を使えば良いじゃない、って感じ。また、.matファイルからのデータのロードも構造体としてロードできる。

MyData = load('data.mat');


cat::Matlab

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060615

2006-06-14

[]「プレゼンテーション法」より (4) 基本技法を用いた描画(2) 「プレゼンテーション法」より (4) 基本技法を用いた描画(2) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 「プレゼンテーション法」より (4) 基本技法を用いた描画(2) - 雲雀は高く空を舞い 「プレゼンテーション法」より (4) 基本技法を用いた描画(2) - 雲雀は高く空を舞い のブックマークコメント

http://image.blog.livedoor.jp/cibicco/imgs/c/3/c381d114.jpg

// 変数の宣言
int i, w, h, step, c;
color cl;

// 初期設定
w = 400;
h = 400;
step = 4;
    
// 描画域の用意
size(w,h);
background(0);

// w/step = 400/4本のラインを引く
for(i=0; i<w/step; i++){
    // ライン色の設定
    cl = color(255/(w/step)*i, 32, 255-255/(w/step)*i, 50);
    stroke(cl);

    line(0,i*step, i*step,h); //始点(上端, t), 終点(t, 下端)
    line(w,i*step, i*step,0); //始点(右端, t), 終点(t, 左端)
}

こんな単純な式でもこんなに美しい。数式によるアーティスティックな表現が簡単にできる、って言うただこの一点だけでも、十分にprocessingを使う価値があると思う。

しかし、processingで外部ライブラリを用いることなく扱える数学演算はごくわずか。

ここでの数式はプログラム中にも書いてあるけど、始点 (0,t) , 終点 (t,400) の直線と、始点 (400,t), 終点 (t, 0) の直線をそれぞれ t を 0 から 4 刻みで 400 まで。


描画のところをちょっとだけ変えて描画。

http://image.blog.livedoor.jp/cibicco/imgs/7/9/79b2bb47.jpg

int i, w, h, step, c;
color cl;

w = 400;
h = 400;
step = 2;
    
size(w,h);
background(0);

for(i=0; i<w; i++){
    cl = color(255/(w/step)*i, 32, 255-255/(w/step)*i, 50);
    stroke(cl);
    line(0,w*sin(i*step), h*cos(i*step),h);
    line(w,w*cos(i*step), h*sin(i*step),0);
}

こちらは,始点 (0, 400*sin(t)), 終点 (400*cos(t), t) の直線と、始点 (t, 400*cos(t)), 終点 (400*sin(t), 0) の直線をそれぞれ t を 0 から 1 刻みで 400 まで。400 は描画領域のサイズ.


キーワード

cat::processing.org, processing.org

, ,

[]確率信号処理 / 日誌的に 確率信号処理 / 日誌的に - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 確率信号処理 / 日誌的に - 雲雀は高く空を舞い 確率信号処理 / 日誌的に - 雲雀は高く空を舞い のブックマークコメント

no title

ここ2日ほど空き時間に読んでいる。直接触れたことはなくても要素技術には触れてるんだなぁ、などと思ったり。今週中にノート作り(写経)出来そう。

…うーん。日誌はここに書くものか悩ましい。

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060614

2006-06-13

allegro20060613

[]キーワードでのリンク集・TODO キーワードでのリンク集・TODO - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - キーワードでのリンク集・TODO - 雲雀は高く空を舞い キーワードでのリンク集・TODO - 雲雀は高く空を舞い のブックマークコメント

今のところ「リンク集:hoge」と言う形で準備してるけど,カテゴリーリンクと同様に「link::hoge」とする方が良いかも.

そしてこういうTODOはアシカを使えば良いかと.


[][]伺か・プチまとめ (at 2006-5-23) 伺か・プチまとめ (at 2006-5-23) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 伺か・プチまとめ (at 2006-5-23) - 雲雀は高く空を舞い 伺か・プチまとめ (at 2006-5-23) - 雲雀は高く空を舞い のブックマークコメント

オリジナルの伺か人工無脳としては基本的な辞書応答系を取る。伺かのユニークな所は2個体あるいは複数個体を1単位とする事で、個体間のコミュニケーションを基本とした事が挙げられる.これにより、人間の関与圧力が減り、また予測の範囲内で応答を行なうため、自然な応答が可能となる.

初期人工無脳の進化を辿るようにアクセサリ/アシスタントとしての様々な機能(ToDO、天気予報、占いなど)を備えて行ったりしているように見受けられる./ この文未完.

現状ではSHIORIが簡易プログラミング環境&API群となっている、のかな?これによって結構色々な事が可能になってるようだ.

[]クネクネしたりしなかったり クネクネしたりしなかったり - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - クネクネしたりしなかったり - 雲雀は高く空を舞い クネクネしたりしなかったり - 雲雀は高く空を舞い のブックマークコメント

ひよこの会ではクネクネするのは控えめにしよう。

10分ログ中間結果

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060613

2006-06-12

[]Stroke/ラインのプロパティを指定する各種メソッド Stroke/ラインのプロパティを指定する各種メソッド - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - Stroke/ラインのプロパティを指定する各種メソッド - 雲雀は高く空を舞い Stroke/ラインのプロパティを指定する各種メソッド - 雲雀は高く空を舞い のブックマークコメント

目次

プレゼンテーション法(3) - 雲雀は高く空を舞い - ひよこの会」にてラインを引くデモを示した。ここではライン関係の関数を紹介する。


ここではProcessingリファレンスより、Stroke・ラインに関するメソッドを紹介する。なお,ここで記述はProcessing 1.0(BETA)に基づくものであり,バージョンの違いにより異なった挙動を示す可能性がある事に注意すること。

Language (API) リファレンス / Processing 1.0 (BETA)

stroke()

これはナニ?

ラインや図形の境界線の色を指定する関数。指定される色のモードは、現在のcolorMode()によってRGBかHSBになる。デフォルトのカラースペースはRGBであり,各色の範囲は0から255である。

文法

stroke(gray)

stroke(gray, alpha)

stroke(color)

stroke(value1, value2, value3)

stroke(value1, value2, value3, alpha)

引数
gray
グレイスケール。整数(int)あるいは浮動小数(float)
alpha
線のアルファ値(透明度)。 整数(int)あるいは浮動小数(float)
color
color変数。color変数として宣言されてれば何でも(多分)
value1
赤(Red)あるいは色相(Hue)。現在のカラーモードによる。整数(int)あるいは浮動小数(float)。
value2
緑(Green)あるいは彩度(Saturation)。現在のカラーモードによる。整数(int)あるいは浮動小数(float)。
value3
青(Blue)あるいは明度(Brightness)。現在のカラーモードによる。整数(int)あるいは浮動小数(float)。

…めいどと入力すると,メイドと変換される…。


2006-06-01-01

stroke(153);
line(30, 20, 85, 95);

2006-06-01-02

stroke(204, 102, 0);
line(30, 20, 85, 95);

noStroke()

これはナニ?

線と図形の境界線を引かなくする。もしnoStroke()とnoFill()が共に呼ばれた場合,スクリーンには何も描画されない。

文法

noStroke()

引数

なし

2006-06-01-03

noStroke();
rect(30, 20, 55, 55);

ちょっと例が分かりにくいね。

strokeWeight()

これはナニ?

線幅の指定。単位はpixel。これはP3Dレンダラーの元では機能しない(とか)

文法

strokeWeight(width)

引数
width
線幅(pixels)。 整数(int)あるいは浮動小数(float)。

2006-06-01-04

smooth();
strokeWeight(1);   // Default
line(20, 20, 80, 20);
strokeWeight(4);   // Thicker
line(20, 40, 80, 40);
strokeWeight(10);  // Beastly
line(20, 70, 80, 70);

strokeJoin()

これはナニ?

ラインの接続部分の形状を指定する.形状はMITER, BEVEL, ROUNDの三種類(例を参照)。

なお,この関数はP2D, P3D, OPENGLレンダラーの元では機能しない。

文法

strokeJoin(MODE)

引数
MODE
MITER, BEVEL, ROUNDのいずれか。例を参照。

2006-06-01-05

smooth();
strokeWeight(10.0);
strokeJoin(MITER);
beginShape(LINE_STRIP);
vertex(35, 20);
vertex(65, 50);
vertex(35, 80);
endShape();


2006-06-01-06

smooth();
strokeWeight(10.0);
strokeJoin(BEVEL);
beginShape(LINE_STRIP);
vertex(35, 20);
vertex(65, 50);
vertex(35, 80);
endShape();

2006-06-01-07

smooth();
strokeWeight(10.0);
strokeJoin(ROUND);
beginShape(LINE_STRIP);
vertex(35, 20);
vertex(65, 50);
vertex(35, 80);
endShape();

strokeCap()

これはナニ?

線の端の形状を指定する.指定できる形状は四角か丸かちょい伸びの三種類(例を参照の事)。デフォルトの形状は丸(ROUND)。

なお,この関数はP2D, P3D, OPENGLレンダラーの元では機能しない。

文法

strokeCap(MODE)

引数
MODE
SQUARE, PROJECT, ROUNDのいずれか。例を参照.

2006-06-01-08

smooth();
strokeWeight(12.0);
strokeCap(ROUND);
line(20, 30, 80, 30);
strokeCap(SQUARE);
line(20, 50, 80, 50);
strokeCap(PROJECT);
line(20, 70, 80, 70);


キーワード

cat::processing.org, processing.org

, ,


[]日誌的/昨日の続き 日誌的/昨日の続き - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 日誌的/昨日の続き - 雲雀は高く空を舞い 日誌的/昨日の続き - 雲雀は高く空を舞い のブックマークコメント

岐阜大学 横田康成氏による信号処理の授業用テキスト.フーリエ変換、確率的信号処理、非定常信号処理、独立成分分析と網羅的にまとめられていてすばらしい.分量もかなりあり、その分丁寧にまとめられている.

京都大学 佐藤 亨氏による時変スペクトル信号処理の授業用ハンドアウト.レーダーの分野の方らしく、内容の濃いテキスト.ただ、これだけでは理解が難しかった.


京都大学 蘆田 宏氏によるもの.ガボール変換、ガボールウェーブレットなどに関して簡単な概説.

ガボール変換は短時間フーリエ変換を行なうにあたって、窓関数としてガウシアンを用いたもの.ガウシアンの使用により、短時間フーリエ変換では最良の時間-周波数解像度を得ることが出来る.

佐藤亨氏のテキストに参考文献として挙げられていたレビュー.1)は(多分)この分野の第一人者であるCohen氏によるもの.

Amazon.co.jpによると、Cohen氏の「時間-周波数解析」と言う本があるらしい.

http://www.amazon.co.jp/exec/obidos/ASIN/4254200927/503-2828858-1749531

一般化位相空間分布表現のクラスを概念化し、時間-周波数分布の代名詞同然となった「コーエンのクラス」の生みの親であるコーエン教授の著した、平易明瞭な物理数学テキスト。

Amazon.comにて"Cohen,Leon time frequency"で検索すると色々ヒット.ふーむ。

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060612

2006-06-11

[]日誌的に。/時変信号処理 日誌的に。/時変信号処理 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 日誌的に。/時変信号処理 - 雲雀は高く空を舞い 日誌的に。/時変信号処理 - 雲雀は高く空を舞い のブックマークコメント

うまくまとめるところまで分かりきらなかったので。

時変信号処理について。非定常信号処理とも言う?

時変信号処理は、時間によって性質が変わる様な信号。大雑把に言って。これに対する処理方法として、短時間フーリエ解析、とwavelet解析、と言うものがあるんだけど、その間を埋めるもの、として、コーエンのクラス?と言うものがあるとか。それに関する色々なんだけど、うーん、よく分からなかった。

追記。

定常信号(ずっと周期的な波が続く信号)に対して非定常信号というものがある。定常信号に対する解析手法としてフーリエ解析がある。これは、信号をサイン波の重ね合わせで表現することで、その信号の周波数を知りましょう、というもの。(大雑把に)

ところが、非定常信号だと、まぁ、色々良くないよね。と言うことで、例えばノイズがはいる様な信号に対して、確率信号処理、時間に応じて性質の変わる波に対して、時変信号処理、てのが考えだされた、と。

順番に、ある手法が考えだされたのは、以前までの手法のこう言うところがダメなのだ、というところを追いながら学習した方が分かりやすそう。

使った資料はあとでリンクを張る。

[]deal() deal() - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - deal() - 雲雀は高く空を舞い deal() - 雲雀は高く空を舞い のブックマークコメント

no titleより

cell配列や構造体の要素をそれぞれの変数に分配するには以前はdeal()関数を使うか,あるいは,loopを使用する必要があった.Matlab R14からは : を使う事でそれが可能となった.

deal()

[Y1, Y2, Y3, ...] = deal(X)
[Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...)

: を使ったdeal()の実現

ここでセル配列Cと構造体Aを以下のように定義する.

C = {rand(3) ones(3,1) eye(3) zeros(3,1)};

A.name = 'Pat'; A.number = 176554;
A(2).name = 'Tony'; A(2).number = 901325;

deal()を使った要素の展開

[a,b,c,d] = deal(C{:})
[name1,name2] = deal(A(:).name)

これは以下のように実現される.

[a,b,c,d] = C{:}
[name1,name2] = A(:).name
トラックバック - http://chick.g.hatena.ne.jp/allegro/20060611

2006-06-10

[]至言 至言 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 至言 - 雲雀は高く空を舞い 至言 - 雲雀は高く空を舞い のブックマークコメント

Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning.

—Albert Einstein

過去に学び,今を生き,未来を望め.大事なことは問い続けることだ.問い続けることを止めないことだ.

- アルベルト・アインシュタイン (19世紀後半から20世紀前半を生きたユダヤドイツ人男性)


[] ホームワーク  ホームワーク - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク -  ホームワーク - 雲雀は高く空を舞い  ホームワーク - 雲雀は高く空を舞い のブックマークコメント

関数の定義方法 - 雲雀は高く空を舞い - ひよこの会の続き

404 Not Foundの演習問題

半径 r の円の面積を返す関数を定義せよ。

def sCircle(r = 1.0)
  pi = 3.141592654
  return (r ** 2.0) * pi
end

実行結果

irb(main):001:0> sCircle
=> 3.141592654
irb(main):002:0> sCircle(4)
=> 50.265482464
irb(main):003:0> sCircle(19843)
=> 1236985296.85021

立方体の体積を返す関数を定義せよ。

def vCube(w = 1.0, d = 1.0, h = 1.0)
  return w * d * h
end

実行結果

irb(main):004:0> vCube
=> 1.0
irb(main):005:0> vCube(1,4)
=> 4.0
irb(main):006:0> vCube(6,2,48)
=> 576

円錐の体積を返す関数を定義せよ。

def vCone(r = 1.0, h = 1.0)
  pi = 3.141592654
  return ( ( (r ** 2.0) * pi )* h ) / 3.0 
end

実行結果

irb(main):007:0> vCone
=> 1.04719755133333
irb(main):008:0> vCone(3,24)
=> 226.194671088

原点から点 (x, y, z) までの距離を返す関数を定義せよ。

def distance(x = 0.0, y = 0.0, z = 0.0)
  return ( (x ** 2.0) + (y ** 2.0) + (z ** 2.0) ) ** 0.5
end

実行結果

irb(main):009:0> distance
=> 0.0
irb(main):010:0> distance(2,4,5)
=> 6.70820393249937
irb(main):011:0> distance(2)
=> 2.0

a^bb^a の値を表示する関数を定義せよ。

def exponent(a = 1.0, b = 1.0)
  return a ** b, b ** a
end

実行結果

irb(main):001:0> exponent(4,3)
=> [64, 81]


cat::ruby

,

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060610

2006-06-09

[]関数の定義方法 関数の定義方法 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 関数の定義方法 - 雲雀は高く空を舞い 関数の定義方法 - 雲雀は高く空を舞い のブックマークコメント

ここで関数とは、入力に対して出力を返すもの…大まかすぎる気がする。これでは、システムの様なものになってしまう。まぁいいや。

関数の定義はdef 関数名(仮引数,...) 〜 end で行なう。ここで、仮引数関数への入力となる変数

関数定義の例

[復習] 関数の実行方法

関数の実行は

ruby function.rb

関数irbライブラリとして読み込んで使うには

irb -r function.rb
関数定義の例
# x の3乗を返す関数 cube
def cube(x)
    x**3
end

# 2数の和を返す関数 sum
def sum(x,y) # 複数の仮引数はコンマで区切る
    x + y
end

# 0 を返す関数 zero
def zero     # 仮引数がないときは省略可
    0
end

これをファイルtest.rb に保存して実行したのが以下。このとき、ファイルの改行方法をWindows式(CR+LF)かUnix式(LF)にすること。Mac式(CR)ではシンタックスエラーとなる。

$ irb -r test.rb
irb(main):001:0> sum(43,243)
=> 286
irb(main):002:0> zero
=> 0
irb(main):003:0> cube(432)
=> 80621568
irb(main):004:0> sum(34,345) + cube(34)
=> 39683
irb(main):005:0> sum(43,zero)
=> 43
irb(main):006:0> cube(sum(4,3))
=> 343
irb(main):007:0> exit

また、cube(4), sum(4,3)cube 4, sum 4,3のように( )を省略する事もできる

デフォルト引数

引数デフォルト値を設定する事で入力を省略する事が出来る。デフォルト値の設定はdef function(x, y=0) ... endのように、「仮引数=デフォルト値」とする。また、このとき、引数は、デフォルト値のない引数デフォルト値のある引数の順に記述する必要がある。

# 3数までの数値の和 sum
def sum(x, y=0, z=0)
    x + y + z
end

# xのn乗根(省略すれば平方根)を返す関数 root
def root(x, n=2)
    x ** (1.0 / n)
end

実行結果

$ irb -r test.rb
irb(main):001:0> sum(1,2)
=> 3
irb(main):002:0> sum(1,2,3)
=> 6
irb(main):003:0> sum(1)
=> 1
irb(main):004:0> root(3)
=> 1.73205080756888
irb(main):005:0> root(4,4)
=> 1.4142135623731
irb(main):006:0> exit

変数の有効範囲(スコープ)

ローカル変数は、それが定義された範囲内(def ~ enddo ~ endなど)でしか有効ではない。

x = 1          # (1) 変数 x の定義
               # (2)
def f(x)       # (3) 仮引数 x の定義(?)
    y = 2      # (4) 変数 y の定義
    y * x + y  # (5)
end            # (6)
               # (7)
def g(n)       # (8) 仮引数 n の定義(?)
    n + 1      # (9)
end            # (A)
               # (B)

このような関数があった時にそれぞれ

(1)で定義されたx は、 (1)(2)(7)(B)で有効

(3)で定義されたx は、 (4)(5)で有効

(4)で定義されたx は、 (5)で有効

(8)で定義されたx は、 (9)で有効

ロック内で定義された変数(ローカル変数)は、そのブロックをぬけると有効範囲を外れ、破棄される。一方、(1)のようにどのブロックにも属さない範囲(トップレベル)で定義されたローカル変数プログラム終了まで残る。

ホームワーク

  1. 半径 r の円の面積を返す関数を定義せよ。
  2. 円錐の体積を返す関数を定義せよ。
  3. 立方体の体積を返す関数を定義せよ。
  4. 原点から点 (x, y, z) までの距離を返す関数を定義せよ。
  5. a^bb^a の値を表示する関数を定義せよ。


cat::ruby

,

2006-06-08

[]イメージファイルの投稿 イメージファイルの投稿 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - イメージファイルの投稿 - 雲雀は高く空を舞い イメージファイルの投稿 - 雲雀は高く空を舞い のブックマークコメント

イメージファイルの投稿をどうしようか。何が言いたいかというとフォトライフが使い辛い。フリーでのアップロード限度が3MB。さらに、アップロードした画像を自動で再圧縮してしまう。その結果、今日投稿した二枚のイメージは元が9KB, 8KBだったものがそれぞれ100KB弱となってしまった。

さて、どうしよう。

1) サブアカ等を使ってフォトライフとともに生きる。

2) フォトライフ有料オプションか、グループの有料オプションを使う

3) 別のところにイメージだけアップロードする。

3)がbetterな気がするけど、めんどくさいのはいやだなぁ。とくにFTPなんてもう使いたく無い。

追記

画像はLivedoor Blogアップロードすることにしました。

coco-log, fc2 blogも試したんだけど、これらは外部から画像読み込みできなかったので。coco-logはJAVAアプレットまで貼れる、fc2 blogアレゲデザインが多くてステキ、だったのに残念。

[]窓関数(2) 窓関数(2) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 窓関数(2) - 雲雀は高く空を舞い 窓関数(2) - 雲雀は高く空を舞い のブックマークコメント

昨日に引き続いて。N点の窓関数プロパティ

Type of windowApprox. transition width of main lobePeak sidelobe(dB)
Rectangular4\pi / N-13
Bartlett8\pi / N-27
Hanning8\pi / N-32
Hamming8\pi / N-43
Blackman12\pi / N-58

以下、Rectangular window, Hanning window, Hamming windowについて。Chebychev, Kaiserについては後ほど。

Rectangular window

http://image.blog.livedoor.jp/cibicco/imgs/b/e/bedb4a12.png

Rectangular4\pi / N-13

メインローブ幅は狭いがサイドローブも大きい。そのため、ブロードな周波数特性を示す。(図はN=128のRectangular Window)

Hanning Window

f:id:allegro:20060609121803p:image

Hanning8\pi / N-32

 h(n) = 0.5-0.5\cos \frac{2\pi n}{N-1} (0 ≦ n ≦ N-1)

 h(n) = 0(otherwise)

窓の両端が0となり、窓長と同じ長さの信号成分がスペクトルに反映しない。(図はN=128のHanning Window)

Hamming Window

f:id:allegro:20060609121724p:image

Hamming8\pi / N-43

 h(n) = 0.5-0.46\cos \frac{2\pi n}{N-1} (0 ≦ n ≦ N-1)

 h(n) = 0(otherwise)

Hanning windowの境界効果を修正したもの。(図はN=128のHamming Window)

[]自己相関関数 (1) 自己相関関数 (1) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 自己相関関数 (1) - 雲雀は高く空を舞い 自己相関関数 (1) - 雲雀は高く空を舞い のブックマークコメント

Auto-Correlation Function (ACF) \Phi_{xx}

特徴として良く用いられるのは

  1. 遅れ時間がゼロのときのエネルギー \Phi_{p}(0)
  2. ACF有効継続時間 \tau_{e}
    • 正規化ACFのエンベロープが0.1になる遅れ時間
    • 音源信号自体に含まれる繰り返し成分あるいは残響成分を表す
  3. 第1ピークの遅れ時間 \tau_{1}
    • 音の高さに関する心理量・ピッチと関係する
  4. 第1ピークの振幅 \Phi_{1}

[]クネクネ クネクネ - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - クネクネ - 雲雀は高く空を舞い クネクネ - 雲雀は高く空を舞い のブックマークコメント

id:Agapeさんの「階段の登り方」の解答(id:Agape:20060608:1149788621)。良い考え方だと思います。解答の作り方(書き方)はこれから追々馴れていくと思いますし問題ないんじゃないかな、と思います。

13C2をTeXで書くとしたら、このように書くかなぁ。

[tex: _{13}C_2]

 _{13}C_2

でも、13がいやに下にさがってしまって、ちょっとかっこわるいかも。

AgapeAgape2006/06/09 15:37わ、TeXあったんですね。早速修正しました。
13が下に下がっちゃってもこっちの方が読みやすいですね~。

2006-06-07

[]窓関数について 窓関数について - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 窓関数について - 雲雀は高く空を舞い 窓関数について - 雲雀は高く空を舞い のブックマークコメント

windowingはtime domainではスカラーのかけ算として、frequency domainではコンボリューションで表される.そのため重要なのはfilterと違ってフラット性とか急峻性ではない.コンボリューションであることを考えれば明らかだけど、特徴となるのは、メインローブの幅と、メインローブとサイドローブの大きさ比となる。まぁもちろんtime domainでの形状は大事ではあるんだけどさ.

まり、メインローブの幅が狭ければ周波数分解能が高まり、メインローブとサイドローブの大きさ比が小さければ、小さいエネルギーのピークが埋もれることはなくなる.これは…トレードオフなのかな?

128点の窓関数を比較する.

関数mainlobe width (-3dB)Relative sidelobe attenuation
Hamming0.0195-42.6
Hanning0.021-31.5
Rectangular0.013-13.3

http://www.cybernet.co.jp/matlab/support/manual/r14/toolbox/matlab/index.shtml

[]ちょっと反省。 ちょっと反省。 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ちょっと反省。 - 雲雀は高く空を舞い ちょっと反省。 - 雲雀は高く空を舞い のブックマークコメント

他の人にオープンにしようぜ、といいつつ自分は「オープンにしたい情報」だけをオープンにしていたな = 「オープンにしたものか微妙な情報」は十把一絡げでクローズにしていたな、とちょっと反省。

オープンにすることのリスクよりもメリットを重視して色々オープンにしていきたい、です。

いやぁ、色々オープンにするのはいいけど、なんか量が少ないと、一日頑張ってるの?とか思いそう/思われそうで(笑)

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060607

2006-06-06

[]ふぃぼなっち(2) ふぃぼなっち(2) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ふぃぼなっち(2) - 雲雀は高く空を舞い ふぃぼなっち(2) - 雲雀は高く空を舞い のブックマークコメント

下にかいたフィボナッチ数列を求める関数fib()再帰関数の例として。n が自然数で無いときのことを考慮してないけど、フィボナッチ数列の定義に沿った、いまの僕には割と自然な書き方かな。

再帰を使わないで繰り返しでやる方法もあるだろうし、他にも書き方はいくらでもあると思うので、これはあとでやる。

あと、再帰と繰り返しとどっちが早いんだろう、とか、もっと早くするには何か最適化できるんだろうか、とか思うけど、うーん。今のところよく分からん。

あ、一般項計算しちゃえよ、ていうのもあるか。

一般項については

http://chick.g.hatena.ne.jp/kiri-no/20060606/1149583529

id:kiri-noがまとめてるので、そちらを参照のこと。

[]クネクネ クネクネ - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - クネクネ - 雲雀は高く空を舞い クネクネ - 雲雀は高く空を舞い のブックマークコメント

今日はオヤスミ。何か疲れた。心情はちらしの裏にでも書いといて、殺伐とただ書き記した方が良いか。

とりあえず保留。

[]ふぃぼなっちふぃぼなっち。 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ふぃぼなっち。 - 雲雀は高く空を舞い ふぃぼなっち。 - 雲雀は高く空を舞い のブックマークコメント

def fib(n)
  if n == 1 
    return 1
  elsif n == 2
    return 2
  elsif n > 2
    return fib(n-1)+fib(n-2)
  end
end

skypeしてて話題に上ったので。n番目のフィボナッチ数列を求めるプログラム

elseifじゃなくてelsifなのね。これに気がつかなくて、てどれだけ初歩的な、てか注意力の問題だよね。中身についてはまた後ほど。とりあえず、眠い。

15番目のフィボナッチ数が987

20番目のフィボナッチ数が10946

40番目のフィボナッチ数が……計算が終わりません。

追記2

40番目のフィボナッチ数は165580141でした。

Rubyで実行時間を計るには何を使ったらいいんだろね。

追記2

フィボナッチ数の定義は、F(1) = 1, F(2) = 1, F(n) = F(n-1) + F(n-2) だった。

,

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060606

2006-06-05

[]グループキーワード「ひよこの会グループキーワード「[[ひよこの会]]」 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - グループキーワード「[[ひよこの会]]」 - 雲雀は高く空を舞い グループキーワード「[[ひよこの会]]」 - 雲雀は高く空を舞い のブックマークコメント

グループキーワード「ひよこの会」を作ろうと思うんだけどなに書こう。

[]「ニューラルネット入門」より (1) 「ニューラルネット入門」より (1) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 「ニューラルネット入門」より (1) - 雲雀は高く空を舞い 「ニューラルネット入門」より (1) - 雲雀は高く空を舞い のブックマークコメント

これは云々である.

だいぶ基本的なテキストぽい.

1. はじめに

略.

2. 最急降下法

多くの場合,学習とは,与えられた評価関数の最適化問題に帰着する.数多く存在する最適化手法のうち,ここでは最も簡単な最適化手法の1つである「最急降下法」について記す.

評価関数 \fs{+1} f(a) を最小にする \fs{+1}a を求める.

最急降下法は,ある適当な初期値から始めて,その値を繰り返し更新することにより,最適なパラメータを求める繰り返し最適化手法のうち最も基本的なものの1つである.

この方法におけるパラメータ更新は式(1)でなされる.

\fs{+1} a^{(k+1)} = a^{(k)} - \gamma \frac{\partial f(x)}{\partial a}|_{a=a^{(k)}}... (1)

ここで \fs{+1}a^{(k)}\fs{+1}k 回目の繰り返しで得られたパラメータ \fs{+1}a の推定値で, \fs{+1}\gamma は学習係数と呼ばれる定数であり, \fs{+1}(\gamma >0) である.\fs{+1}\gamma が大きい場合、最適パラメータの周囲で値が振動あるいは発散してしまう可能性がある.一方,\fs{+1}\gamma が小さい場合,1回の更新ではパラメータの値がほとんど修正されず,最適なパラメータが求まるまでの繰り返し回数が多く必要となる.

 ほーむわーく

以下の \fs{+1}f(a) が最小の値を取る \fs{+1}a を最急降下法を用いて求めよ

  1. \fs{+1} f(a) = (a - 1.0)^2
  2. \fs{+1} f(a) = (a - 1.0)^2 (a + 1.0)(a + 2.0)


cat::信号処理

, ,

kiri-nokiri-no2006/06/06 13:41先生! a と α の見分けがつきません!

allegroallegro2006/06/08 04:07確かに(笑)とりあえず学習率をαからγに変えました。

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060605

2006-06-04

[]数値と演算子 数値と演算子 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 数値と演算子 - 雲雀は高く空を舞い 数値と演算子 - 雲雀は高く空を舞い のブックマークコメント

数値

Rubyで扱える数値には整数と浮動小数点がある.

整数

-255 =-0377 =-0xff =-0XFF

それぞれ、10進数、8進数、16進数。8進数は0で始まり、16進数は0x/0Xで始まる。

083 , 0xG などはsyntax errorになる。

booleanはあるのかな?

浮動小数

3.14, .14, 3.0, 6.02e23( = 6.02\times10^{23}), 5.1e-5( = 5.1\times10^{-5}), 6e-1 ( = 6.0\times10^{-1})

演算子

四則演算+α
+
加算
-
減算
*
乗算
/
除算 (整数÷整数の計算の答えは整数に丸められる)
%
除算で商を整数とした余り
**
累乗 (乗除算よりも優先される。また連続してある場合は後ろから実行される)
整数の非負整数乗は整数で、それ以外は浮動小数
0**00**0.00 になるが、 0.0**00.0**0.0NaN (Not a Number)(どういう意図で?)
インスタンスメソッド
数値.abs
数値の絶対値を表示
数値.floor
数値を超えない最大の整数
数値.round
数値の小数点以下を四捨五入
数値.ceil
数値を下回らない最小の整数
数値.truncate
数値の0方向の丸めて整数
数値.to_i
数値を0方向へ丸めて整数に (same as truncate)
数値.to_f
数値を浮動小数に

これらの演算は他の演算子よりも優先度が高い

また、他にどのようなメソッドがあるかはinteger (整数), float (浮動小数)により、以下を参照。

ref:Math, ref:Bignum, ref:Fixnum, ref:Numericなども参照。

[]数学のためのRuby入門 4-2 数学のためのRuby入門 4-2 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 数学のためのRuby入門 4-2 - 雲雀は高く空を舞い 数学のためのRuby入門 4-2 - 雲雀は高く空を舞い のブックマークコメント

404 Not Foundのホームワーク

  1. 2の平方根と立方根を計算せよ。
  2. (1+\sqrt{2})(1-\sqrt{2}) を計算せよ
  3. 2^6+1 を 10 で割った余りを求めよ
  4. \frac{22}{7} の小数第四位を四捨五入して、小数第三位まで求めた値を計算せよ

1) 2の平方根と立方根を計算せよ。

irb(main):003:0> 2.0 ** (1.0/2.0)
=> 1.4142135623731

** で累乗の計算. ** は四則演算に優先するので, 1 / 2 を先に計算するために ( ) で囲む.

また,1 / 2とした場合, 12がインテジャ(整数)扱いされてしまうため,1.0 / 2.0として計算する.以下に例を示す.

irb(main):004:0> 1/2
=> 0
irb(main):006:0> 1.0/2
=> 0.5
irb(main):007:0> 1/2.0
=> 0.5

三乗根も同様.

irb(main):008:0>  2.0 ** (1.0 / 3.0)
=> 1.25992104989487

2) (1+\sqrt{2})(1-\sqrt{2}) を計算せよ

irb(main):015:0> ( 1.0 + (2.0 ** (1.0/2.0))) * ( 1.0 - ( 2.0 ** (1.0/2.0)))
=> -1.0

特に問題なし.

3) 2^6+1 を 10 で割った余りを求めよ

irb(main):010:0* ((2.0**6)+1) % 10
=> 5.0
irb(main):011:0> ((2.0**6)+1)
=> 65.0

特に問題なし.

4) \frac{22}{7} の小数第四位を四捨五入して、小数第三位まで求めた値を計算せよ

irb(main):016:0> 22.0/7
=> 3.14285714285714
irb(main):017:0> 22.0/7.0*1000
=> 3142.85714285714
irb(main):019:0>  ( 22.0 / 7.0 * 1000 ).round / 1000.0
=> 3.143

.round は数値の小数点第1位を四捨五入するメソッド.それを使うために,数値を1000倍して数値の小数点第4位を小数点第1位に持ってくる.そこで .round により四捨五入,今度は1/1000して元の数値を得る,と.

こんなのピーナッツですな。


cat::ruby

,


[] 変数変数の代入  変数と変数の代入 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク -  変数と変数の代入 - 雲雀は高く空を舞い  変数と変数の代入 - 雲雀は高く空を舞い のブックマークコメント

404 Not Foundより

変数の命名規則

ある特定の値を保存するもの、あるいは不定の値の代わりをするもの。

命名は小文字の英字か_で始まり,英数字か_が続く名前ならOK.

参考) Rubyのコードを書くにあたってのコーディング規約

Rubyコーディング規約

また、予約語としてあらかじめ使われている文字列がある. これは変数名として使用する事が出来ない.

予約語はこのエントリの最後に掲載.

以下に変数名として使えるもの,使いないものの例を挙げる.

変数名として可能
  • x
  • pi
  • eulerGamma
  • log2_10
  • _DEGREE_
変数名として不可能
  • ArcTangent大文字で始まっている)
  • 2pi (数字で始まっている)
  • exp2.5 (アンダースコア以外の記号が入っている)
  • next予約語

値の代入と参照

x=3 のように、左側に変数、右側に値を書くことで、変数に値が保存されます。これを(変数への値の)代入と呼びます。代入された値は、他の値を代入したり、変数のスコープを抜ける(後述)までは保持されます。代入された値を使うときは、変数をそのまま数値などと同じように書きます。このことを(変数の値の)参照と言います。

404 Not Foundより

自己代入

変数の値を増やすために x = x + 3 といったことをよく行います。これを省略して、 x += 3 と書くことができます。同様に、 -=, *=, /=, %=, **= も使えます。こういった、変数自身との演算結果をその変数に代入するような演算子を、自己代入演算子といいます。

404 Not Foundより

以下に例を示す.

irb(main):023:0* x = 10
=> 10
irb(main):024:0> x += 2
=> 12
irb(main):025:0> x *=3
=> 36
irb(main):031:0> x ** 0.5
=> 6.0

予約語一覧

続きを読む

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060604

2006-06-03

[]Ruby始めます。 Ruby始めます。 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - Ruby始めます。 - 雲雀は高く空を舞い Ruby始めます。 - 雲雀は高く空を舞い のブックマークコメント

手を広げすぎな気がするんだが。まぁ、1日1ジャンルくらい出来たら良いな、と思いつつ。

Rubyを始めてみようと思ったのは「404 Not Found」と言うページを見つけたので。割と数学演算が可能である、という記述を見るので挑戦してみることにした。

もっとも、本格的にやるならmatlabとか、あるいはフリーでRという最強の環境もあるので、とりあえずはこれを通してRubyを1通り読めるようになること、が目的かな。Rは特に触るつもりはないけど、数学処理、特に統計処理をするなら最強の環境かと思います。

数学のためのRuby入門

Rによる統計処理

[]「数学のためのRuby入門」より (1) Rubyとは 「数学のためのRuby入門」より (1) Rubyとは - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 「数学のためのRuby入門」より (1) Rubyとは - 雲雀は高く空を舞い 「数学のためのRuby入門」より (1) Rubyとは - 雲雀は高く空を舞い のブックマークコメント

Rubyの特徴

404 Not Foundより。

あと、

  • 最近流行ってる

とか。

リファレンス

とか。また、ri method名でコマンドマニュアルを表示。

[] インストール方法  インストール方法 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク -  インストール方法 - 雲雀は高く空を舞い  インストール方法 - 雲雀は高く空を舞い のブックマークコメント

Windowsの場合はダウンロードとかを参考に。

Mac OS Xの場合ははじめから入ってるので特に問題なし。バージョンアップする方法は…後ほど。

インストールされてるRubyのバージョンを知るには

$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]

…ちょっと古いか。

[]とりあえず動かしてみよう とりあえず動かしてみよう - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - とりあえず動かしてみよう - 雲雀は高く空を舞い とりあえず動かしてみよう - 雲雀は高く空を舞い のブックマークコメント

404 Not Foundより。

 1) def sum(first, last) # summing from first to last
 2) 	s = 0
 3) 	for i in (first..last)
 4) 		s += i
 5) 	end
 6) s
 7) end
 8) 
 9) puts sum(1, 10)       # summing from 1 to 10
10) puts sum(84, 2500) # summing from 84 to 2500

(※ 行頭の数字はプログラム実行にあたり不要)

このプログラムエディタで書き、適当なフォルダ適当な名前.rbで保存する。

ここでは~/rubytest/sum.rbで保存する。実行するにはruby sum.rbで。

ruby sum.rb

55
3122764

となった。

以下、適当に。

  • コメントは#
  • for文は  for i in (first..last) endで。
    • (first..last).....としたところputs sum(1, 10)が45となった。1<=i<=10が1<=i<10になったのかな?
  • putsで行末改行するテキスト出力
  • 変数の宣言は特に必要ない
  • 関数の定義はdef

[]irb - interactive ruby irb - interactive ruby - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - irb - interactive ruby - 雲雀は高く空を舞い irb - interactive ruby - 雲雀は高く空を舞い のブックマークコメント

引き続き、404 Not Foundより。

コマンドプロンプトでirbとするとrubyの対話型実行環境が起動する。これによってrubyコマンドの一行ごとの実行が可能となる。またirb -r function.rbとする事で適当なfunction.rbをライブラリとして読み込んで実行できる

irb
irb(main):001:0> 3-3
=> 0
irb(main):002:0> 5*6
=> 30
irb(main):003:0> exit
irb(main):001:0> exit
Mashiro:~/test sora$ irb -r sum.rb
55
3122764
irb(main):001:0> sum(4,30)
=> 459
irb(main):002:0> sum(-4,3)
=> -4
irb(main):003:0> exit


cat::ruby

,

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060603

2006-06-02

[]プレゼンテーション法(3) プレゼンテーション法(3) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - プレゼンテーション法(3) - 雲雀は高く空を舞い プレゼンテーション法(3) - 雲雀は高く空を舞い のブックマークコメント

第2回(id:allegro:20060531:p2)の続き。基本技法を使っての描画。

f:id:allegro:20060603132001j:image

// 変数の宣言
int i, i_max, w, h;
color cl;

// 初期設定
w = 200;
h = 200;
i_max = 500;
//i_max =  2500;
//i_max =  5000;
//i_max = 10000;
        
// 描画領域の用意
size(w,h);
background(0);

// i_max回ランダムな向き、色、透明度25%でラインを描く
for(i=0; i<i_max; i++){
    cl = color(random(255),random(255),random(255),25);
    stroke(cl);
    line(random(w),random(h),random(w),random(h));
}

上の図はi_maxを500回(A)、2500回(B),5000回(C),10000回(D)としてそれぞれ保存、photoshopで一枚にして文字を書き込んだもの。

描画領域を制限する方法、文字を書き込む方法が分かればphotoshopを使う必要はないんだけど。

[]processing使用環境 processing使用環境 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - processing使用環境 - 雲雀は高く空を舞い processing使用環境 - 雲雀は高く空を舞い のブックマークコメント

[]saveFrame() saveFrame() - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - saveFrame() - 雲雀は高く空を舞い saveFrame() - 雲雀は高く空を舞い のブックマークコメント

プログラム中に

saveFrame();

と書いて実行すると、実行後にかかれた画面の画像データがTIFイメージファイルとして保存される。この時、保存されたファイルは「Sketch Folder」に保存される。[Sketch]メニューから[Show Sketch Folder]を選択することでフォルダが表示される。


キーワード

cat::processing.org, processing.org

, ,

トラックバック - http://chick.g.hatena.ne.jp/allegro/20060602

2006-06-01

[]良いコードとは? 良いコードとは? - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 良いコードとは? - 雲雀は高く空を舞い 良いコードとは? - 雲雀は高く空を舞い のブックマークコメント

no titleより。

良いコードとは

  • fast
  • clear
  • readable
  • maintainable
  • efficient
  • short
  • memory-efficient
  • "clever"
  • reliable

とのこと。また、これをどう追求していくかってのはmatlabに限った話しでは無い.毎日5回、1000回ずつ唱えよ.

コメント欄にRubyのイタレータを使えばよりアドバンスな表現が簡単に実現できる、と書いてある.簡単かどうかは馴れがあるだろうけど、たしかに簡単かも.

[]構造体の呼び出しにおけるダイナミックフィールドリファレンス 構造体の呼び出しにおけるダイナミックフィールドリファレンス - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - 構造体の呼び出しにおけるダイナミックフィールドリファレンス - 雲雀は高く空を舞い 構造体の呼び出しにおけるダイナミックフィールドリファレンス - 雲雀は高く空を舞い のブックマークコメント

http://blogs.mathworks.com/loren/?p=6:titleより.

Matlabのデータ型の1つ,構造体のフィールドには.に続く文字列を指定することでアクセスできる.

allegro.height = 175;
allegro.weight = 62;

y = allegro.weight;

.()を使うことで文字列を変数で指定できる.

property{1} = "height";
property{2} = "weight";

allegro.(property{1}) = 175;
allegro.(property{2}) = 62;

y = allegro.(property{2});

メリットとしては扱いやすいことや、分かりやすいことが挙げられる.複雑な構造体*1を使用する際にsetfield, getfield, evalを使うよりもよっぽど読みやすく分かりやすい.

追記

fieldnamesと言う関数があるとか.これはfieldnames(structure)とすることでフィールドの一覧をセル構造体として出力する.

[]sort & find sort & find - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - sort & find - 雲雀は高く空を舞い sort & find - 雲雀は高く空を舞い のブックマークコメント

no titleよりsortfindの使い方.

sort

sortデフォルトでは昇順に並び替える。しかし、オプションで並び順を明示することで昇順にも降順にも使用可能.

t2 = sort(t1, 'descend')
t3 = sort(t1, 'ascend')

another way (not recommended)
t4 = flipud(sort(t1));
//with no option, sort sorts by ascend

find

findでは条件に合うものを「n個」探し出す、と言った使い方が出来る.

n = 3;

x = rand(1, 100);
xTrue = find(x>.5, n)


cat::Matlab

*1:個人的には「複雑な構造体」が出る時点で何らかしら問題があるんじゃないかと思うけど

テクノラティプロフィール