MATLABではじめるプログラミング教室

MATLABではじめるプログラミング教室

MATLAB初心者が実際に手を動かして覚えることを念頭に,基本技術について丁寧に解説。「音」に関する楽しい題材を多数掲載。

ジャンル
発行年月日
2017/10/05
判型
B5
ページ数
168ページ
ISBN
978-4-339-02877-5
MATLABではじめるプログラミング教室
在庫あり
2営業日以内に出荷致します。

定価

2,860(本体2,600円+税)

カートに入れる

電子版を購入

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • レビュー
  • 著者紹介

MATLAB初心者が実際に手を動かして覚えることを念頭に,「音」に関する楽しい題材を多数掲載しながら,基本技術(数値計算,データの読み込み,分析,表示,加工,保存,GUIアプリケーション作成)について丁寧に解説しています。

【本書の特長】
・理工系大学に入ってMATLAB を初めて使う方が慣れ親しむためのテキスト
・大学の授業(半期)でも使用しやすい13 テーマを収録
・体験的な自学自習を可能とした解説と演習問題
・音響信号処理の専門家が音を材料に楽しめるテーマを多数収録
・高校数学と大学数学との橋渡し的な教材としても有用
・プログラミングに興味がある高校生でも自習可能

【各章と目標】
1章「まずは使ってみる―解の公式をプログラムしてみよう―」
目標:MATLABで簡単な計算ができるようになり,エディタにコマンドを列記し実行できるようになる!
2章「ループと条件分岐ってなに?―電卓を越えたプログラム―」
目標:forとifの基本を押さえ,さまざまな場面で利用・応用できるようになる!
3章「サイン・コサインも思いのまま―自分だけのコマンド作成―」
目標:MATLAB備え付けのコマンドを使用することから始め,自分だけのコマンドの作成ができるようになる!
4章「レポートや論文でも使えるグラフ表示―plotのワザを習得!―」
目標:自分が見てわかるだけでなく,他人に見せられるグラフ作成ができるようになる!
5章「2Dから3Dへ―おしゃれな3D 曲面も描ける―」
目標:3Dグラフを描けるようになる。その際に,plot3なのか,meshなのか,それともsurfなのか,表示したい関数などをよく考えて選択できるようになる!
6章「MATLABへ入れたり出したり―地味だけど大切なデータのやり取り―」
目標:少なくともsaveやloadコマンドを使いこなせるようになる。よりコンピュータ言語を使いこなすために,fprintfやfscanfを扱えるようになる!
7章「オーディオ&画像データもお手のもの?―.wavや.jpgは特別扱い?―」
目標:バイナリファイルの保存と読み込みを適切に使いこなせるようになる。より便利に使いこなすために,audiowriteやimreadを扱えるようになる!
8章「理工系なら絶対に知っておきたいこと―最小二乗法を考える!―」
目標:最小二乗法の本質を理解し,正規方程式から実際に近似直線を計算できるようになる!
9章「サイン波を音として聴く―周波数って?シンセサイザの基本の音―」
目標:周波数の関数としてのサイン波を作成して,ドレミの音階がつくれるようになる!
10章「時間と周波数の関係―よく知らなくても使えるFFT―」
目標:MATLABによる音響計測を行い,振幅周波数スペクトルをグラフ表示できるようになる!
11章「超簡単なノイズ低減&リバーブ!―じつは音響信号処理のキホン―」
目標:線形システムの理解,移動平均のプログラミング,convコマンドを使うだけでなく,畳込み演算の計算ができるようになる!
12章「GUIってなに?―日常にあふれているアプリの中身を知る―」
目標:MATLABによるGUI開発環境の起動・利用を行い,オーディオファイルの時間波形をグラフ表示できるようになる!
13章「アプリをつくる側になってみる―結局MATLABって簡単だったね―」
目標:オーディオファイルの振幅周波数スペクトルをグラフ表示できるようになる!

私がMATLABを最初に使ったのは,1995年の春,大学の4年生になり卒論研究を始めたときにさかのぼる。恥ずかしながら,学部3年生までの授業で習得しておくべきプログラミング言語(Pascal,C)などは苦手でなんとか単位をもらったことを記憶している。とにかく単位を取ることだけに必死で,なんのためにプログラミングをやっているのかも定かではない,そんな時間を過ごしていた。1995年と言えば,この本を手に取った読者はご存知ないかもしれないが,爆発的にパソコンが普及し始めるキッカケとなったWindows95が発売され,それと同時にインターネットが各家庭に設置され始めた年として,インターネット元年として記憶されている。当時の大学のコンピュータ環境と言えば,インターネットへの接続は当たり前ではあったが,OSとしてはUNIXが基本であった。MATLABも配属先の研究室ではUNIX環境にインストールされて利用されていたため,MATLABを使うためにUNIXも最低限のレベルで同時に扱えるようになる必要があった。担当教授が世界の研究者と交流を持ちながら,世界の研究現場の現状をよく把握されていたので,MATLABには当たり前のように研究室にて触れることができたが,当時は日本ではまだまだ知られていないプログラミング言語であったように思う。

修士課程のころ,海外の国際会議にて何度か発表する機会に恵まれ,海外の大学を見て回ったとき,必ずやっていたことは,その大学の書店を巡ることであった。自分の専門分野に近い書棚にいくと,必ず置いてあったのがMATLABの関連書籍だった。自分にとっては専門分野の書籍よりもMATLABの関連書籍はずっと身近で「この使い方は知っている,これは知らない」と頷きながら立ち読みをしたことをよく覚えている。あれから20年近く経ち,なんの因果かわからないが,現在母校の大学で新規に開講されたMATLABを学ぶ「計測制御プログラミング」という授業の非常勤講師を担当している。これは大学が2015 年に大規模なMATLABのライセンス契約を結んだことに端を発しているが,いまでもMATLABが世界中で幅広く利用されていることが単純に嬉しく,またその実益が(教育的にも研究的にも)かなり大きいということを改めて感じている。

MATLABの最大の長所は,私が学生だったときから変わらないが,専門分野の詳しいことがわからなくても,なんとなく使ってみることができるという点にある。例えば,FFTという音響信号処理や画像処理の分野では当たり前に使う数値計算がたったの1行で「使えてしまう」のである。当時から例えばFFTの中身がわからないまま利用できてしまうことが問題視されていた(いまもそのキライはある)が,私はこの点はむしろ非常にポジティブに捉えている。なぜなら,コンピュータを使うことに対してハードルが高いと,それ以上先にはなかなか踏み出せないからである。つまり「自分で考える」という最も大切で楽しい思考の時間にたどり着く前に挫折しがちであるからである。理工系では課題や問題に対して「やってみる」という,実践しようとする基本的態度がいつの時代でも大切で重要であると私は信じている。

賛否両論はあるかもしれないが,私はこのとにかくどうなるかわからないが「やってみる」という態度に価値を置き,後の「自分で考える」ことの大切さと楽しさが多くの方に理解されるように,その価値をこの本の中心的な柱に据えようと思う。「とにかくやってみる」という境地から,「自分で考える」境地に至るまで,MATLABは,頭の中のアイディアを具現化する際に非常に有益なツールとして皆さんをサポートしてくれることと思う。その最初のステップとしてこの本を選んで頂けたら,とても嬉しく思う。

2017年8月 奥野貴俊(著者代表)

1. まずは使ってみる ―解の公式をプログラムしてみよう―
1.1 MATLABを使ってみよう
 1.1.1 早速MATLABを立ち上げてみる
 1.1.2 MATLABの超基本コマンドのまとめ
1.2 MATLABエディタを使ってみよう
 1.2.1 エディタに解の公式を書いてみる
 1.2.2 さまざまな値の表現方法
 1.2.3 ベクトル作成で重要な役割を持つコロン
 1.2.4 MATLABのMATはMATRIXのMAT
演習問題

2. ループと条件分岐ってなに? ―電卓を越えたプログラム―
2.1 電卓の域を越えるMATLABの使い方をマスターしよう
 2.1.1 for(ループ)について知ろう
 2.1.2 if(条件分岐)について知ろう
 2.1.3 elseをifと一緒に使う
2.2 まだあるループと条件分岐
 2.2.1 もう一つのループwhile
 2.2.2 もう一つの条件分岐switch
演習問題

3. サイン・コサインも思いのまま ―自分だけのコマンド作成―
3.1 まずはMATLABに備わっているコマンドを使ってみよう
 3.1.1 その前に1,2章を簡単に復習する
 3.1.2 よく使うコマンドを使ってみる
 3.1.3 数値計算でよく使うコマンドを使ってみる
3.2 オリジナルのコマンドをつくってみよう
演習問題

4. レポートや論文でも使えるグラフ表示 ―plotのワザを習得!―
4.1 これまでのplotコマンドの使い方とより正確な表示方法
 4.1.1 plot(x,y)に慣れよう
 4.1.2 グラフの表示範囲を意識しよう
4.2 グラフをもっとデコレーションしよう
 4.2.1 線の種類とマーカー
 4.2.2 横軸・縦軸のラベル,グラフのタイトル
 4.2.3 片対数グラフと両対数グラフ
4.3 フィギュアウィンドウの扱い方
 4.3.1 フィギュアウィンドウの作成と消去
 4.3.2 一つのフィギュアウィンドウにいくつものグラフを描く
4.4 ほかにもあるグラフプロット
 4.4.1 離散信号を示すならstemプロット
 4.4.2 ヒストグラムも簡単に表示できるhistogramコマンド
演習問題

5. 2Dから3Dへ ―おしゃれな3D曲面も描ける―
5.1 3Dは2Dの延長?
 5.1.1 まずは2Dを復習しながら3Dにしてみる
 5.1.2 3Dグラフ描画のplot3を使ってみる
5.2 線から面へ
 5.2.1 曲面表示のmeshとsurf
 5.2.2 グラフの色合いの変更colormap
5.3 2Dのほうが見やすい場合もある
演習問題

6. MATLABへ入れたり出したり ―地味だけど大切なデータのやり取り―
6.1 MATLABで最も手っ取り早いデータの保存と読み込み方法
 6.1.1 保存・読み込みの最強コマンドsaveとload
 6.1.2 saveとloadでテキストファイルも扱える
6.2 多少煩わしいけれど,より正確なファイルの入出力方法
 6.2.1 テキストファイルへの保存fprintf
 6.2.2 テキストファイルの読み込みfscanf
演習問題

7. オーディオ&画像データもお手のもの? ―.wavや.jpgは特別扱い?―
7.1 やはり煩わしいけれど,バイナリファイルの保存と読み込み
 7.1.1 バイナリファイルへの保存fwrite
 7.1.2 バイナリファイルの読み込みfread
7.2 特別扱いその1:オーディオデータの保存と読み込み
 7.2.1 オーディオデータの保存audiowrite
 7.2.2 オーディオデータの読み込みaudioread
7.3 特別扱いその2:画像データの保存と読み込み
 7.3.1 画像データの保存imwrite
 7.3.2 MATLABで扱う画像データの種類
 7.3.3 画像ファイルの読み込みimread
演習問題

8. 理工系なら絶対に知っておきたいこと ―最小二乗法を考える!―
8.1 最小二乗法ってなにをするためのモノなのか
 8.1.1 まずはゴールの設定
 8.1.2 2点を通る直線
 8.1.3 3点を通る直線?
8.2 最小二乗法をできるだけシンプルに解説
 8.2.1 最小二乗法の本質について
 8.2.2 違う角度から最小二乗法を見てみる
 8.2.3 最小二乗解を求め,近似直線を引いてみる
演習問題

9. サイン波を音として聴く ―周波数って? シンセサイザの基本の音―
9.1 A4のサイン波をつくる
 9.1.1 時間に依存したサイン波をつくる準備
 9.1.2 もう一つの準備,サンプリング周波数と時間軸
 9.1.3 いよいよサイン波をMATLABでつくる
9.2 サイン波でドレミをつくる
 9.2.1 ドレミの周波数とは?
 9.2.2 いよいよドレミをつくる
9.3 シンセサイザの基本の音をつくってみる
 9.3.1 矩形波をつくってみる
 9.3.2 三角波をつくってみる
 9.3.3 ステレオの音のつくり方
演習問題

10. 時間と周波数の関係 ―よく知らなくても使えるFFT―
10.1 自分の声をMATLABで録音してみましょう
 10.1.1 イヤホンをマイク代わりに?
 10.1.2 オーディオ録音のコマンドaudiorecorder
10.2 サイン波を分析してみる
 10.2.1 振幅周波数スペクトルって?
 10.2.2 時間データを周波数データにするには高速フーリエ変換fft
演習問題

11. 超簡単なノイズ低減&リバーブ! ―じつは音響信号処理のキホン―
11.1 信号を処理する線形システム
 11.1.1 世の中に数多くある線形システム
 11.1.2 線形とは?
11.2 移動平均による雑音抑制処理
 11.2.1 まずは使用する雑音付加音声信号の準備
 11.2.2 雑音を減らす方法を考えてみましょう
11.3 音に響きを付加する畳込み演算
 11.3.1 音の響きを付加するための問題設定
 11.3.2 畳込み演算を一歩ずつ
演習問題

12. GUIってなに? ―日常にあふれているアプリの中身を知る―
12.1 とりあえずGUI開発環境を動かしてみる
 12.1.1 GUI開発はguideで始まる
 12.1.2 GUIプログラミングはCallback関数へ
12.2 音の分析アプリをGUI開発環境を使ってつくってみる
 12.2.1 guideを入力する前にしておくこと
 12.2.2 まずはオーディオファイルを読み込んで上半分にplotしてみる
演習問題

13. アプリをつくる側になってみる ―結局MATLABって簡単だったね―
13.1 guideコマンドでGUI開発環境を再起動
 13.1.1 12章のおさらいと本章でやることの確認
 13.1.2 どんなオーディオデータでも対応できることが重要
13.2 複数のCallback関数間を行ったり来たり
 13.2.1 ポップアップメニューを使うための準備
 13.2.2 ポップアップメニューには約束事がある
 13.2.3 handlesの再登場
 13.2.4 アプリケーションの完成度を高めるエラー回避
演習問題

引用・参考文献
演習問題解答
索引

素人からプロの研究者・エンジニアになるための丁寧な「橋渡し」の一冊


 合同会社アイキュベータ代表
 博士(工学) 松田雄馬


 本書は,プログラミングの解説書の中では,比較的新しいスタイルを採用しています。
 素人プログラマーからプロの研究者の入口へと導いてくれる「橋渡し」として,利用価値のある解説書なのではないでしょうか。

 MATLABというプログラミング言語は,多くの大学がライセンス契約をしており,大学生であれば,また,大学図書館などを利用できる一般の方々であれば,「気軽に使ってみる」ことができます。特に,MATLABは,数式の演算にも強いので,MATLABを使ってプログラムを動かしてみることは,数学そのものへの理解を深めることにも繋がります。データ処理を行う研究現場でも,MATLABは伝統的に使われています。

 筆者は,工学院大学で教鞭を執っているとのことで,本書を見ながら,本書に書かれているプログラムを自分で打ち込んでみることで,まるで,筆者が隣にいて,一つ一つ丁寧に手ほどきしてくれるような構成になっています。まずはプログラムを打ち込み,それに続いて,数学の解説などの含めて丁寧に行ってくれるので,高校レベルの数学力があれば,無理なくMATLABプログラミングが学習でき,本書を終了する頃には,画像や音声といったデータを自力で処理できるようになるでしょう。

 各章のレビューは以下の通りです。
 まず,第一章は,まずはMATLABというものに触れてみる(プログラミングという作業に触れてみる)ことを目的にしています。中学校で学ぶ二次方程式の「解の公式」を題材に,自分で打ち込んだ数式を計算する方法を学びます。
 第二章では,ループと分岐構造という,プログラムを作るうえで必要な知識を学びます。単に,無味乾燥な説明をするような辞書的な解説書とは異なり,本書では,「グラフを表示する」ということを題材にしながら,実際の研究現場を垣間見つつ,こうした知識を自然に学んでいくことができるような工夫がされています。
 第三章では,長いプログラムを直接打ち込むのではなく,「コマンド」にしていつでも呼び出せるようにする方法を学びます。同時に,三角関数などの関数を,直感的に理解できるための工夫もされています。
 第四章第五章では,グラフの描画を本格的に学びます。グラフの描画は,実際に研究をはじめると,データをまとめる際には必須の作業であり,必要なときに見直すと,更に役立つでしょう。
 第六章では,データの保存方法を学びます。この方法を知っておかないと,データの量が増えてきたときに,「途中経過を観察できない」「途中でコンピュータがフリーズしてしまうと全部計算をやり直さないといけない」など,多くの問題に直面してしまいます。実際に研究をはじめるときには,特に役立つ内容でしょう。
 第七章では,画像データや音声データの取り扱い方を学びます。MATLABは,こうした特殊なデータを取り扱うことが得意です。画像にフィルターをかけてぼかしてみたり,音声を可視化してみたりといったことが自在にできます。Instagramのアプリで行うような写真の加工を行うプログラムを,自分で作ることもできるようになるのです。研究者である筆者の手ほどきを受けながら,挑戦してみましょう。
 第八章では,近年盛んに行われている「データ分析」のはじめの一歩である「最小二乗法」という方法を学びます。これによって,「過去のデータから将来を予測するにはどうすればいいか」ということを,筆者は教えてくれます。
 第九章から第十一章では,筆者の専門分野でもある音声データの取り扱いを学びます。プロの研究者のいるところまで,一気に連れて行ってもらえます。自力で音声データを加工できるようになるので,自分の作ったプログラムで,頑張れば,作曲までできるようになるかもしれません。
 第十二章から第十三章では,「アプリの中身を知る」ことで,毎日目にする様々なプログラムがどのように動いているのかを知ることができるような工夫をしています。

 全体を通して,MATLABというプログラミング言語の仕組みを,実際に手を動かしながら学ぶことによって,数学についての理解も深めながら,読者を,プロの研究者の入口に導いてくれる丁寧な「橋渡し」の書であると言えます。MATLABは,(本書には書かれていませんが)Octaveというフリーソフトを使うことで,本書に書かれていることはほとんど問題なく実行できます。新しいことにチャレンジしたい大学生や,実用的なデータ処理を行うことにチャレンジしたい一般の方には,一読の価値があるのではないでしょうか。

amazonレビュー

奥野 貴俊(オクノ タカトシ)