逆風に背中を向けて追い風に

ある理系のフリした文系人間の手記

学生向けMATLABの購入方法

f:id:LingerBelong:20161122222629p:plain


こんにちは、ゆらとです。


個人用のMATLABが欲しいという誘惑に勝てなかったので買うことにしました。


1ライセンス30万くらいと聞いていたのですが、調べてみるとMATLAB Studentなら4990円~で購入できるとのこと。


これは買うしかない!!!


ダイレクトマーケティングはこの辺にして。


実際に買ってテストプログラムを動かすところまでの流れを紹介したいと思います。


今回購入するのは最新リリース(2016年11月26日現在)のMATLAB R2016bです。


購入のためにクレジットカードが必要になるのでそこにはご注意ください。

MATLABを買うための手順

1. 学生向けMATLABのページへ


まず、MathWorksのホームページにアクセスします。


下にスクロールすると下の図のような黒地のメニューがでてきます。


f:id:LingerBelong:20161126085946p:plain,w480

このメニュー内に「学生向けソフトウェア」というリンク(赤い四角の中)があるのでそれを選択します。


2. 買う製品を選択

MATLAB and Simulink Student Suite」(MATLAB+Simulink+アドオン製品10個)が9,990円

MATLAB Student (別売り)」(MATLAB本体のみ)が4,990円


となっています。


アドオン製品はSimulinkとか各種Toolboxとか、MATLAB本体以外のもののことです。


入っているものの違いは以下のとおりです。

                                   
MATLAB and Simulink MATLABのみ
価格99904990
MATLAB本体f:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091547p:plain,w30,h30
Simulinkf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Control System Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Simulink Control Designf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
rocessing Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Optimization Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Signal Processing Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
DSP System Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Statistics and Machine Learning Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Symbolic Math Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Data Acquisition Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30
Instrument Control Toolboxf:id:LingerBelong:20161126091547p:plain,w30,h30f:id:LingerBelong:20161126091551p:plain,w30,h30


個人的にSimulinkやOptimization Toolboxなどは頻繁に使います。

ほかにも魅力的なToolboxが多いので9990円の方を買いました。


なお、アドオン製品は別売で買うことができるので欲しいToolboxがあったら選択しましょう。


買う製品が決まったら「レジへ進む」を押します。

確認画面が出るので、再度「レジへ進む」を選択します。

3. インストーラをダウンロード

レジへ進むとMathWorksにログインすることを求められます。

アカウントを持っていない方は新しく作りましょう。


f:id:LingerBelong:20161126094542p:plain,w480


ここのページから数ページ先まで情報の入力が続きます。


情報を入力し、注文を確定すると以下のページが出てきます。


f:id:LingerBelong:20161126095145p:plain,w480


これでMATLABをダウンロードできるようになりました!


あとはご自分のPCにあったバージョンのインストーラをダウンロードしてください。

4. MATLABをインストール

インストーラを起動するとしばらく処理が続いた後、こんな画面が出てきます。


f:id:LingerBelong:20161126095757p:plain,w480



さっきアカウントを作ったところなので、MathWorksでログインを選択し、「次へ」を押します。


文書に同意する画面、ログインする画面、ライセンスを選択する画面、と続きます。


インストールしたいフォルダを聞かれるので適当な場所に設定します。


もう数回の確認画面をはさんでインストールが始まります。

かなり巨大なファイルなのでインストールに時間がかかります。


買い物に行くなりお茶を飲んで休憩するなりして時間をつぶしましょう。


インストールが完了すると次の画面になります。


f:id:LingerBelong:20161126114325p:plain,w480


僕の環境(Win10 Home, Intel corei7-U5510, RAM:8GB)でたっぷり1時間かかりました。


再び進めていくと、ライセンスを使うユーザーを指定する操作に入ります。

この辺は「次に」連打で大丈夫です。


すべて終了するとインストーラが閉じられます。

5. MATLABを起動


インストーラは唐突に終わりますが、その後にMATLABを選択するとちゃんと起動します。


f:id:LingerBelong:20161126115735p:plain,w480


こんな画面が出た後、しっかりと起動してくれました。


コマンドを打ち込むと、ちゃんと動いてくれました。


f:id:LingerBelong:20161126120234p:plain,w480



あとはガンガン自分のプログラミングをするだけです!!

おわりに

本来は目玉飛び出るくらい高いMATLABも、学生が個人で買う分にはそこそこの値段で買うことができます


研究室で使っていたり趣味で科学技術計算をしていたりする学生さんは購入を検討してみてはいかがでしょうか。


いきなり買うのはどうかなー、と感じる方のために評価版もあります。

そちらから試してみてもいいかもしれませんね。




ここまで読んでくださってありがとうございました。

Matlabでdatetimeを使わずに日付をyyyymmddの形にする方法

f:id:LingerBelong:20161122222629p:plain

こんばんは、ゆらとです。Matlabユーザーです。

Matlabは個人ライセンスではなく研究室のものです。

2011aとかいう古~いバージョンを使っています。


そのせいであの関数入ってないやん! と泣きを見ることも多々……。

使いたい関数を使えない


年間のcsvデータを読み込む作業がありました。

1日の気象データが入ったcsvファイルが1年分あるといった具合です。


具体的には

xxxx_20150101.csv
xxxx_20150102.csv
xxxx_20150103.csv
.
.
.
xxxx_20151231.csv


みたいなcsvファイル群があり、いっこいっこを読み取るという作業です。


あー、

date = datetime(2015, 1, 1);
ymd = yyyymmdd(date);
csvread('xxxx_%d.csv', ymd);

みたいにして、forで繰り返すなり行列作るなりすればいいかー


……なんて出来ればよかったんですが

datetimeのドキュメンテーション(現在の日付に基づく配列の作成と日付文字列または日付値からの変換 - MATLAB datetime - MathWorks 日本)を参照すると


f:id:LingerBelong:20161122221742p:plain

んんー????

f:id:LingerBelong:20161122221609p:plain

あっ……

f:id:LingerBelong:20161122221821p:plain

→いいえ


Matlab R2011aユーザーにとってdatetimeは時代を先取りしすぎた関数だったようです。


めげずに代替案を探る今日この頃です。

datetime関数を使わずに日付をyyyymmddの形に直す


というわけで、今回はdatetimeを使わずに日付をyyyymmddの形(20150101みたいな形)の数値データに変換する方法を紹介したいと思います!


基本的な流れとしては


  1. 年、月、日を入力する
  2. 入力された年月日をシリアル日付値に変換する
  3. シリアル日付値を日付の文字列に変換する
  4. 日付の文字列を日付ベクトルに変換する
  5. 8桁の日付値yyyymmddを出力する


こんなもんですねー。

ちなみに、シリアル日付値は0000年1月1日を1とする日付番号です。

2016年11月23日なら736657です。ちゃんと閏年も考えてくれてて優秀です。



じゃ、関数ファイルとして作りましょう



コマンドで実行すると

f:id:LingerBelong:20161123214638p:plain

こんな感じになります。やったね!



古いMatlabで戦っている方の一助になれたなら嬉しいです。



ここまで読んでくださってありがとうございました。

GNU Octaveの正規分布を作る関数名はnormal_pdfではない

f:id:LingerBelong:20161120213956j:plain

こんばんは。ゆらとです。

今回はGNU Octave正規分布を作ろうとして躓いたので、そのあらましと解決法について書きます。

Octave、使用者の少なさ故かググってもトラブルの原因が分からないことが結構あるんですよね。

同じことで苦しんでいる方の役に立てれば嬉しいです。

日本語のリファレンス


さて、日本語のマニュアル(GNU Octave: 日本語マニュアル for 2.1)のGNU Octave: 25.4 分布のページを参照すると、正規分布の作り方について次のように書いています。

Function File:normal_pdf (x, m, v)


xの各要素について,平均がmで分散がvである 正規分布の,xにおけるPDF(確率密度関数)を返す。
初期値はm = 1およびv = 1である。


なるほどなるほど……。で、これを参考に次のコードを打ち込みます。


すると、次のエラーが返ってきました。

error : 'normal_pdf' undefined

いやいや、定義されてないって言われても困りますやん。じゃあ何を使えと。

英語のリファレンス


日本語では有用そうな情報が見つからなかったので、原典(GNU Octave: Distributions)を調べてみると……

Function File: normpdf (x)
Function File: normpdf (x, mu, sigma)


For each element of x, compute the probability density function (PDF) at x of the normal distribution with mean mu and standard deviation sigma.

Default values are mu = 0, sigma = 1.

こ、これだああああぁぁぁぁ~~~!!!

関数名がnormal_pdfじゃなくてnormpdfなのかあああぁぁぁ~~!!

こんな初歩的なことなのに、一人でめっちゃテンション上がってました(*'▽')

で、次のように入力してみると

晴れて正規分布のグラフを出力することができました!

f:id:LingerBelong:20161120214016j:plain

日本語版マニュアルの関数名は古い可能性がある

他にも

- 正規分布の累積分布関数
  × normal_cdf(x, mu, sigma)
   normcdf(x, mu, sigma)

- 正規分布に従う乱数
  × normal_rnd(mu, sigma, row, column)
   normrnd(mu, sigma, row, column)


などなど、日本語のリファレンスが新しい関数名に対応していない例が多々あるようです。


日本語マニュアルよく見たらOctave 2.1.xと古めのものですし、こういうことがあるのも致し方ないことかもしれませんね。

関数が未定義だと言われたら英語のリファレンスを見てみるのが良いようです。


一応、僕の環境も書いておきます。
OS : Ubuntu 14.04
GNU Octave version 3.8.1



ここまでお読み下さり、ありがとうございました。