
MATLABではじめるプログラミング教室(改訂版)
MATLAB初心者が実際に手を動かして覚えることを念頭に,基本技術について丁寧に解説。「音」に関する楽しい題材を多数掲載。
- 発行年月日
- 2025/04/10
- 判型
- B5
- ページ数
- 168ページ
- ISBN
- 978-4-339-02950-5

- 内容紹介
- まえがき
- 目次
- レビュー
- 書籍紹介・書評掲載情報
- 広告掲載情報
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月
著者を代表して 奥野貴俊
改訂にあたって
MATLABを含めたコンピュータ周辺の製品は,ご存知の通り,日々アップデートが行われている。本書も初版第1刷発行(2017年)から約8年が経過し,GUIについて解説した12,13章について,guide環境からappdesigner環境を用いたアプリケーション作成へと変更する必要性が出てきたため,本改訂を行うことになった(12,13章はMac版(Apple Silicon)のR2024bで動作確認済)。一方で,本書が取り扱った多くの内容は,MATLABの基本的な使い方,あるいは工学で基礎となるようなものであるため,まだまだ実行可能で,現役の参考書・教材として利用可能である。
本書は初版から一貫してMATLABの使い方を学ぶことで「プログラミングとはどういうものか」ということを知り,各読者の研究活動等において「手足のように使える道具にすること」を狙っている。本書を足掛かりとして,将来,新たな価値を生み出す人が増えてくれることを期待している。
2025年2月
著者を代表して 奥野貴俊
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 もう一つのループwhil
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.2 Dから3Dへ
―おしゃれな3D曲面も描ける―
5.13 Dは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開発はappdesignerで始まる
12.1.2 GUIプログラミングはコールバック関数へ
12.2 音の分析アプリをGUI開発環境を使ってつくってみる
12.2.1 appdesignerを入力する前にしておくこと
12.2.2 まずはオーディオファイルを読み込んで上半分にplotしてみる
演習問題
13. アプリをつくる側になってみる
―結局MATLABって簡単だったね―
13.1 appdesignerコマンドでGUI開発環境を再起動
13.1.11 2章のおさらいと本章でやることの確認
13.1.2 どんなオーディオデータでも対応できることが重要
13.2 複数のコールバック関数間を行ったり来たり
13.2.1 ドロップダウンを使うための準備
13.2.2 ドロップダウンの設定
13.2.3 appオブジェクトの再登場
13.2.4 アプリケーションの完成度を高めるエラー回避
演習問題
引用・参考文献
演習問題解答
索引
読者モニターレビュー【 tokuhira 様(業界・専門分野:製造業・システムエンジニア)】
コロナ社といえば教科書というイメージを持っていたし装丁も教材然としているのに、開いてみるととても柔らかい本でした。講義の資料としてではなく、本だけでも自分でひと通り最後まで完走できるように背中を後押しする優しさが感じられました。ともすれば冗長と受け止められかねない話し言葉に近い文体も、行間にギャップが生じさせない丁寧さの裏返しのようで、スムーズに読み進められました。
プログラミング言語の入門本と初学者向け解説動画の中間的な雰囲気で、紙の本が好きな私にはとてもありがたいです。これが若い世代にどう受け止められるのかと日々動画に浸っている高校生の子供に見せてみると、意外と好感度が高いようでした。ただMATLABの環境構築は初学者泣かせのところもあって、サイトライセンスを持つ大学等でないと個人購入に躊躇するケースもままありそうです。私自身がその一人だったので、今回この本を読むにあたっては無料でも利用できるMATLAB Onlineを活用しました。
イベント駆動型アプリを構築するところでMATLAB App Designerを使うのですが、これがWeb上のMATLAB Onlineでも動作するのには助けられました。また、GNU Octaveでもほとんどの章を問題なくこなすことができました。それなら環境にお金をかけずに済むので、子供に行列演算ツールの導入本として譲ってみようと思います。
読者モニターレビュー【 うしろすがた 様(業界・専門分野:基礎工学・医療福祉工学)】
PythonとC/C++で少しプログラミング経験があるので、プログラミングそのものよりもMATLABの作法を学ぶために読んでみました。
内容は1週間ほどで読み切ることができました。入門書ということもあり、様々な信号処理やデータ処理のアルゴリズムについて詳細に書かれているわけではありませんでしたが各章の終わりに演習問題があり、基本的な内容をしっかり掴むことができました。
特に印象に残ったのは後半にあるapp designerの解説です。ここまで学んできた内容を活用することで、難しさを感じることなくGUIアプリを作成できました。GUIに起因する一般的なエラー回避の手段も載っておりとても参考になりました。
本書の内容自体に不満はないのですが、読み終わった後の発展性を考えるとMATLAB内部で用意されているコマンド(機能)の調べ方なども載っていればさらに良かったと思います。これがあれば本書を終えた後も学習を進めていくための足がかりになると思いました。
読者モニターレビュー【まさきDX 様(業界・専門分野:機械システム)】
本書は、2017年の初版から今回の第7刷改訂まで、多くの方に学ばれてきた実績があることから、私自身も体験し、優れた書籍であることが分かった。書籍の体裁は、一色刷りのシンプルなデザイン、シーケンシャルな流れであるため、初心者にとって順を追って学びやすく、分かりやすい。第1章~2章でプログラムの基本、第3章以降でMATLAB特有の機能を丁寧に説明してある。第6章~7章のデータの保存と読み込みは秀逸で、その後、音や画像の扱いで若者の興味を高め、GUIでアプリを形とする構成である。MATLABは高価であるが学生版や個人使用向けなら手頃な価格である。デジタル化の時代、理工系の学生に限らず、誰もが本書でMATLABを学んでもらいたい。
MathWorks 様にプロモーション用ページを制作いただきました。
-
掲載日:2025/05/01
-
掲載日:2025/04/01