ますはらの日記(?)

無線通信の勉強をしてる学生のぼやき(?)

近づいている世代交代。。。

どうも。こんばんは。
TeamJ Advent Calendar 2016 - Adventarの18日目の記事になります。
他の人が書いたものも面白いと思うので、是非とも読んでいただければと思います。

実は今日、自分が主将として陸上部をまとめ上げる最後の機会となる対校戦が行われました。
今日行われた対校戦はトラック&フィールドの試合ではなく、駅伝だったなので主に中長距離の選手が襷をつないで競い合いました。
自分は応援する立場だったのですが、やっぱり駅伝は面白いものです。
来年の年始、観れるといいのですが。。。(卒研でそれどころじゃないかも、、、汗)

駅伝に思いを馳せるのはこのくらいにして、タイトルのことに触れようと思います。
正直なところ、不安な状態から始まった自分の代、しかし、「やるしかない」っていう状況でした。
最後の最後まで不安と不甲斐なさを胸にこの1年間主将を務めてきましたが、今思えば本当にあっという間。
研究室との両立が思うようにいかず、後悔することばっかりでしたが今では近づいてる世代交代を前に必死で引き継ぎ資料を練っています(笑)
オブジェクト指向でも大事な「継承」だけでも後悔のないようにすれば大丈夫かな、と思ってます。
終わり良ければすべて良し!*・゜゚・*:.。..。.:*・'(*゚▽゚*)'・*:.。. .。.:*・゜゚・*


陸上部の一員としていられるのもあとわずかだなぁ、とか世代交代だなぁ、とか色々思う1日でした。
もう少しまとまりのある記事を書きたいのにうまくいきません(笑)
良いブログ(文章)の書き方募集したいくらいです。。。それでは、また。

環境の大切さ

どうも、こんばんは。
TeamJ Advent Calendar 2016 - Adventarの11日目の記事になります。

ブログって頻繁に更新するもんじゃないですね、ネタが尽きます(笑)
ということで、最近ふと思った、ちょっと真面目なことについて書こうと思います。

自分の身を置く「環境」ってすごく大事だと思いませんか?
学校、友達、部活・サークル、委員会、バイト先、研究室...
様々な場があり、自分の身の回りがそれれによって大きく変化します。
僕の推しメンであるAKB48横山由依さんも去年は正式に総監督になって、この1年は「環境」が相当変わったのではないか?と考えています。。。
「海外逃亡したい」何がAKB総監督・横山由依を苦悩させるのか
↑この記事を見ると「環境」によって大きく心情も変わってしまうことがわかります。

ここからは、自分の話に戻したいと思います(笑)

自分の所属する研究室はかなり高いレベルを目指して日々取り組んでいます。
自分が「ここに進みたい!」、「ここならきちんと研究に打ち込める!」、そう思って志望し、四苦八苦しつつも充実した時間を過ごせています。
最近では、他大学との合同輪講が行われていて、参加するものの、普段での考え方や物事への突き詰め方みたいなものがまるで違いました。

正直なところ、自分達で輪講を開いた方がいいんじゃないか?ってくらいに拍子抜けしてしまい、いかに自分が恵まれ、充実した環境にいるということを認識しました。

学生としていられれるのも大学院を含めても残り数年、社会に出る前に「充実した環境」に身を置けるように精進し、自ら「充実した環境」を作り出せるようになれればな、と思っています。

みなさんも身を置く「環境」に少し意識を注いであげてみてはいかがでしょうか?
それでは、また。

12月8日

みなさん、どうも。
これはTeamJ Advent Calendar 2016 - Adventarの8日目の記事です。

今日、12月8日は特別な日なのです。
それは、自分が推している横山由依さんの誕生日なのです(((o(*゚▽゚*)o)))
そして、AKB48劇場のオープン日でもあり、無事12年目に突入しました。

今日はその日を記念する公演があります。(自分は研究の進捗があまり良くないので観れてはいないのですが。。。)
そういう節目をきちんと大事に迎えてあげる、そういった姿勢がいまだに好意を持てる理由なのかもしれません(完全なヲタク目線)

あっ、ついでなんですが、今通ってる大学の創立記念日でもあります。
相変わらず、平常通り講義を行ってるので記念すべき日なのかどうかも怪しいものです。。。笑

なんだかんだ、大学1年の時の夏頃から応援していて、今は離れ気味ではあるものの、こうして頭の中に浮かぶ。。。
そういう思い出などを思い出させてくれるような節目って良いものだなぁ、と思う今日この頃でした( ´ ▽ ` )

みなさんも、是非12月8日は横山由依さんの誕生日だと覚えてください(笑)

懐かしいゲーム

みなさん、こんばんは。
そして、お久しぶりです(笑)

この記事は
TeamJ Advent Calendar 2016 - Adventarの5日目の記事です。

最近では、卒業研究に苦戦を強いられる日々でかなり焦っています(^_^;)
マニアックすぎるテーマなので仕方のないことだなと諦めの境地です(笑)

余談はこのくらいにして、本題にいきましょう。
先日、大学の学園祭が行われました。
その最終日に研究室で飲み会をやるのかな?とも思ったのですが、その2日後に飲み会が予定されていたのでさすがにやることもなく、ひょんなことから大学の友達とゲリラ飲み会をしました(笑)
というより、ゲリラ飲み会に付き合ってくれる友達っていると良いですよね〜( ´ ▽ ` )

飲み会では卒業研究の話題、そして、1つ下の学年では熱い研究室配属を迎えている最中なのでその話もしていました。結局、みんな研究は好きなんです。(いや、違う)
その飲み会後、一人暮らししている友人宅で2次会をやることに。

友人宅に向かう途中から「昔、どんなアニメを見ていたか?」という話題が発端でした。
みんなで「あ〜、見てたわ〜」とか「そんなんあったっけ〜?」みたいな感じで会話が弾み、やがてゲームの話へ。。。

今はポケモンサンムーンがものすごく流行っています。今でこそゲームから離れてしまいましたが、昔はポケモンを筆頭に結構やっていました。
そんな中、話題に上がり盛り上がったのが「ロックマンエグゼ」シリーズです。

いやー、ついつい懐かしさのあまりその日のうちにYouTubeで検索し、プレイ動画を見ながら「こんなやついたなー!!」とか「こんなキャラいたっけ??」みたいな話で笑いが起きる。
こうやってみんなで共通の話題で盛り上がれるという点においてはゲームもアニメも決して悪くないなって思います。

自分が主にやっていたのはロックマンエグゼ4から6までとその「ロックマンエグゼ」シリーズから「流星のロックマン」シリーズに変わって1作目の流星のロックマン1です。
これを機にまたゲーム機本体とソフトを買い揃えてやってみようかな〜とか考えてます。
もし、購入してやることがあればブログに書きたいです。
皆さんも昔遊んだゲームについて思い出したり話したりしてみてはいかがでしょう?
結構、盛り上がるのでオススメです( ^ω^ )

それでは、明日もお楽しみに!

Cython始めました1

どうも、お久しぶりです(笑)
研究室生活が始まって慣れるまでに相当時間がかかってしまい、ブログを再開するのに約半年掛かってしまうハメになっちゃいました(・・;)

せっかくブログを再開できそうなので、何かしたいなーという思いがあったので今回は“Cython”を用いた数値解析に挑戦していきます。


何故Cythonなのか?というと、僕は無線通信に関する研究室に入り様々な計算機シミュレーションをする機会があるのですが、C言語でやっているとやたらと面倒な場面が多いので今まで勉強していた(途中で放り投げてしまいましたが...笑)Pythonの数値解析に便利なモジュールを用いて楽に行いたい!
けど、試行回数が多い計算機シミュレーションでは通常のPythonではC言語に比べて遥かに処理速度が遅く実用的ではない感じになります。

そこでPythonとほぼ同じように各種のモジュールを用いることができるのにもかかわらず、処理速度が割と速いCythonに注目したのである。


今回はCythonの導入とちょっとしたPythonとCythonの比較を行いました(*゚▽゚*)
なお、自分はMacbook Airを用います。そこだけ注意してください。あとはpython3の方に入ってしまっているので実行等する際はpython3で行っています。

それでは、まずCythonの導入です。
これはpipを用いることで簡単に導入できます。

pip install cython

この1行でエラーなどを吐かなければ問題なく使えるはずです!


次は実際にコンパイルして実行する手順です。今回はpyximportを用いた手順のみ紹介します。
例はフィボナッチ数列の計算になります。
(1)pyxファイルを作成

# fib.pyx
#! -*- coding: utf-8 -*-

def fib(int n):
  cdef int i
  cdef double a=0.0, b=1.0
  for i in range(n):
    a, b = a + b, a
  return a

ここでの"cdef"文はC版に静的に片付けしている。

(2)pyximportによって使用

$ python3
>>> import pyximport
>>> pyximport.install()
(None, <pyximport.pyximport.PyxImporter object at 0x10619e240>)
>>> import fib
>>> fib.fib(90)
2.880067194370816e+18

ちなみに、このpyximportは普通に.pyファイルにも組み込んでfibをimportして関数fib()を用いることができます。


最後にPythonとの処理速度を比較してみました。
比較するために以下の2つのファイル(普通の.pyファイルとCythonを適用した.pyファイル)を実行させた。
(i)普通の.pyファイル

# fib.py
#! -*- coding: utf-8 -*-

import time
start = time.time()

def fib(n):
    a, b = 0.0, 1.0
    for i in range(n):
        a, b = a + b, a
    return a

for i in range(1000):

    c = fib(90)

elapsed_time = time.time() - start
print("elapsed_time:{0}".format(elapsed_time))

(ii)Cythonを用いた.pyファイル

# sample.py
#! -*- coding: utf-8 -*-

import time
start = time.time()

import pyximport
pyximport.install()
import fib

for i in range(1000):

    a = fib.fib(90)

elapsed_time = time.time() - start
print("elapsed_time:{0}".format(elapsed_time))


実際に計測した結果は次のようになりました。

関数の実行繰り返し回数: 1000
$ python3 fib.py
elapsed_time:0.006333112716674805
$ python3 sample.py
elapsed_time:0.012300968170166016

関数の繰り返し回数: 100000
$ python3 fib.py
elapsed_time:0.5685431957244873
$ python3 sample.py
elapsed_time:0.041645050048828125

この結果から考えると、関数にループを用いた処理が含まれる場合、試行回数が増えれば増えるほど処理速度の改善が目に見えることがわかりました。
参考にこの本を用いています。↓

Cython ―Cとの融合によるPythonの高速化

Cython ―Cとの融合によるPythonの高速化

Cythonの勉強にはもってこいだと思いますので興味ある人は是非見てみてください。

すごく簡単なことしかできてませんが、これから徐々に進めていって、いずれはシミュレーションも行っていきたいと思います。
次回はいつになるかは未定ですが、ブログ更新したいと思います(笑)

それでは、また。

テールビット

どうも。今日も気楽に書きたいと思います。

 

早速ですが、タイトルに書いた「テールビット」とは、一体何でしょう?

 

説明しよう!

畳み込み符号を用いた通信を行う際に、実際に送信したいデータの後ろに余分なビット列を付加することで、畳み込み符号を生成する際に用いるメモリを初期状態(通常、全部0が入った状態)に戻し、畳み込み符号を復号(ビタビ復号)する際により正確に元のデータに復号する。

この時に付加される余分なビットこそがテールビットなのだ!

気になる方は「畳み込み符号」とか「テールビット」って調べるとよくわかりますよ〜

ここではあえて引用したりしないでおきます。(ただ単に選ぶのがめんどくさい←

 

まぁ、茶番?はこのくらいにしましょう(笑)

最近では畳み込み符号を用いた通信のシミュレーションに取り組んでいるのですが、ビタビ復号も実装に手間取っていますが、同時にテールビットの生成も手間取っていました。

畳み込み符号を生成するときのメモリ数に応じて付加するテールビットの長さも変わりますし、何より状態遷移を考慮して考えるのがもう。。。

 

ところが、明朝3時に64状態の非組織的で再帰式の符号器におけるテールビットの生成関数(符号器に組み込んでしまっているので単体の関数ではないですが)を作ることができました(笑)

ランダムに生成した送信信号を元に、何回も何回も腐るほど実行し、確認。

最後のメモリの状態が初期状態に戻っている。すごく気持ちいい。

 

こんな感じで充実しております(笑)

 

余談ですが、講義の課題でMATLABでプログラムを書く機会がありました。便利すぎるがゆえに訳がわからないという問題もありましたが、いずれは使いこなしたいものです☆*:.。. o(≧▽≦)o .。.:*☆

 

ではでは、今日はこの辺で!

やっべーぞ!

どうも、お久しぶりです(笑)

今日はn日ぶりに書いていこうかなと思います。

 

自分の近況を一言で表すと、「暇がねぇ」に尽きますかね〜

研究室ではB4向けに出される課題に明け暮れ、ゼミでの担当部分は前もって読まないといけないような内容の濃さ、そして、発表スライドの作成と発表練習。。。(まぁ、ほとんどスライド作成しかできませんでしたが)

なかなかヘビーです。(実は課題が終わったら次の課題が降ってきています笑)

 

一方、部活ではどうしても役職のせいでストレスが溜まる事案が多々あり、最近では部活を嫌いになるくらいまでモチベーションは指数関数的に減少しています(笑)

 

タイトルにもありますが、いろんなことが捗らず潤滑に行かず、空回りしているので、「やっべーぞ!」って感じです(笑)

 

まぁ、こんな感じの生活をしてる中で、体力や肉体的な面はお察しですが、勉強面では今までより確実に力がついてきているような気がします。

FFT高速フーリエ変換)を自ら作らなければ大変なことになる場面がありました。

もちろん最初は死ぬような思いでアルゴリズムを手計算で追い、実装に向けて四苦八苦したのですが、今ではものすごく簡単に思えるようになっています。

 

結構、しんどいと感じる場面もありますが、こういった経験ができるとすごく嬉しいので、勉強の楽しさも感じています。

これからは「やっべーぞ!」ってならないように器用に過ごしていきたいですね(笑)

 

それでは、久しぶりのブログ更新はここまで!

また気が向いたら書きますね〜♪( ´θ`)ノ