いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

プログラミング

ライプニッツの公式で円周率を計算できるか?(2)

ライプニッツの公式で円周率を求める話を書きました。www.omoshiro-suugaku.com 中学生の頃この話を聞いて、高校生になってから手に入れた電卓で円周率を求めようと頑張りました。ポケットコンピュータというのも現れ始め、これは当時で3万円くらい。何を使…

Pythonでいくつかの区画でいろいろなグラフを描く

Python、グラフも色々描けそうです。比較のためなど、いっぺんにいくつか表示することもできます。パラメータはたくさんあるようですが、ここでは本当に基本的なものを。 #======================================================== #画面をいくつかの区画…

肉声を電話の声に変換する

電話ので人の声を聞くと、ザラついていると言うか、いかにも「機械を通した声」と言うか、うまい表現の方法がこれ以上見つかりませんがそんな感じに聞こえます。とにかく直に聞いたのとは違いますよね。今回は肉声を電話を通したときの声に変換してみましょ…

wavファイルで、強い音は弱く、弱い音は強く記録し直す

音楽やその他の音が鳴っているとき、大きな音なら媒質(音を伝える媒体。空気や水など)は大きく、小さな音なら小さく揺れているはずです。wavファイルに記録するデータはそれをある程度反映しているのでしょう。媒質が変位していないならデータは0、変位し…

平均律、純正律のドミソの和音を聴き比べる

音階の話です。音の高さを少しずつ変えて音階ができあがります。音の周波数を少しずつ増やしてだんだん高くなるようにするのです。ラの音を440Hzとしましょう。まずラの音を鳴らすwavファイルを作ってみます。コードを載せておきますが、作り方は前にブログ…

ノイズ入りのwavファイルからノイズを消す

ここまでで確認した事実を組み合わせて、wavファイルのノイズを消す実験をしてみましょう。まず、以下のコードでノイズ入りのwavファイルを作ります。wavファイルの作り方は過去の記事を参照してください。 www.omoshiro-suugaku.com #=====================…

ノイズの混ざったデータから周波数成分を見つける

もう少しFFTで遊んでみましょう。使う言語は例によってPython です。今回はノイズの混ざったデータから周波数成分を求めます。元のデータは一見グチャグチャなのですが、FFTで正しい周波数成分が分かります。こういうのを見るとFFT(あるいは数学)は凄いな…

waveファイルの作り方を分かりやすく解説

waveファイルを作ってみました。必要なパラメータをそろえ、サウンドデータをこしらえて保存すればOKです。作曲などはできませんので、10秒間、単純に左右で異なる高さの音が鳴るだけのものにしておきます。単純な方が原理は分かりやすいので、ちょうどよい…

waveファイルで、サウンドデータの符号を一斉に反転するとどうなるか?

16ビットで録音されたwaveファイルでは(getparams()で得られる値がsampwidth=2)、サウンドデータは-32768~32767の範囲の整数値で表され、無音は0です。で、問題です。16ビットで録音されたwaveファイルで、サウンドデータの符号を全て変えたら(1234を-…

Pythonで3Dの散布図、グラフを描く

そろそろ「複数枚の写真から立体を再現」を実験してみたいと考えています。そのために必要そうなコードを整理しておきます。立体の散布図です。与えられた3次元の点をプロットします。次に(x,y)から式を使ってzを計算し、空間内の点を求めてプロットしてみ…

waveファイルの音楽の高音成分をカットして保存し直す

タイトル通りです。Pythonでやってみました。FFT、IFFTを使います。まず、waveファイル(コードでは'BGM.wav')をオープンしてサウンドデータを読み取り、waveファイルのパラメータを表示します。表示を見てステレオ録音であることを確認してください(コード…

pythonでリアルタイムに動くグラフを描く

Pythonのmatplotlibでグラフを描画するのは便利で易しいのですが、普通にshow()で描画するとそこでいったん止まってしまいます。時間を追って変化するグラフは描けません。調べるとpause()というのがあるようで、試してみました。plt.show(0.1)の行です。描…

PythonでscipyのFFT、IFFTを使った分かりやすい例(2)

前回、FFTの例をお見せしました。さらに理解を確実なものにするため、もう少し別のパラメータで確認してみましょう。タイトルは「FFTとIFFT」となっていますが、今回はFFTのみで説明します。コードは以下の通りとします。 import numpy as npimport scipy as…

PythonでscipyのFFT、IFFTを使った分かりやすい例

一部書き換え(グラフを含む)ました(2020.1.4)。 備忘録も兼ね、とにかく分かりやすい例を挙げます。説明も十分にしますので、少し前に書いた記事を参照しながらお読みください。 www.omoshiro-suugaku.com N=100点のサンプリングデータを相手にするとし…

FFT(高速フーリエ変換)の実験、パラメータなどの解釈(2)

続きです。グラフの縦軸の目盛りに関しては別の機会に説明するとして、今回は特に横軸の目盛りの読み方について。まずは基本的な事実を確認しておきます。みなさん分かりきっているからなのか、あまりこういう形にまとめられた資料を見ることがありません。…

FFT(高速フーリエ変換)の実験、パラメータなどの解釈(1)

少し前、このブログでフーリエ変換について書きました。 www.omoshiro-suugaku.com 量が多くなりますので何回かに分けますが、実際にFFTのコードを書くにはどうしたらいいのか、出てきた結果をどう解釈したらいいのか、など具体的に書いてみます。備忘録を兼…

色つきカードをwebカメラで映してPCで色を判断する

PCで顔認識するのは大変です。しかし色の組み合わせなら? 例えば1000人に5cm×10cmくらいのカードを持たせます。カードは4区画に分かれており、各区画には7色から選んだ色が塗られます。つまり、カードの色がPCに見分けられれば7の4乗、2401人の見分けが…

画像処理(2)

画像処理(1)につづき、もう少し紹介しましょう。PCで写真(画像データ)を処理し、埋もれてしまっていた情報を見やすくするなどします。 ●コントラストを変える近い明るさのドットばかりが揃った画像は見づらくなります。コントラストが低い画像、と言いま…

ディープラーニングで数字認識(2)

少し前、数字認識の実験をやっていました。数字認識を含む画像認識に興味があって勉強中です。画像認識とは………数字や文字をパソコンに見せて読ませたり、写真を見せて「写っているのは犬だ」などと判断させたりする技術です。画像認識はコンピュータには難し…

昔のPC環境

大学に入ってずいぶん経って先輩から使い古しのパソコンを買いました。PC-8001というやつです。もちろん当時のパソコンは今に比べればまるっきり非力で、たいしたことはあまりできませんでした。ソフトもほとんどなし。そもそも売られていないのです。いや、…

ステガノグラフィーとは何か

ステガノグラフィー(steganography)の話をしましょう。ステガノグラフィーとは、データを画像など、他のデータの中に隠す技術です。近い(?)ものに暗号というのがあります。暗号は文章を読めなくする技術、ステガノグラフィーは文章の存在自体を隠す技術…

イコライザを作る

wav(ウェーブ)ファイルというのがあります。MediaPlayerなどを使ってパソコンで再生できますよね。wavファイルは構造が決まっていて、ファイルの先頭付近に音楽データの長さや、サンプリング周波数、ステレオかモノラルかの区別のための数値などが入ってい…

画像処理の話(1)

昔のTVの画像はアナログ信号で送信されていました。そのため送信途中で何かエラーが起こっても(ノイズが入るとか)直す方法はありませんでした。今(地デジ)はデジタル信号で、ノイズが入っても、入っていない信号を再送させたりして訂正できます(コンピ…

録音した「グロブなては」を逆に再生しても「はてなブログ」には聞こえない

昔、カセットテープというのがありました。古い「ウォークマン」、ご存じでしょうか。音楽をカセットテープに録音し、それをみんな聴いていたのです。写真がカセットテープです。エヴァンゲリオンで、碇(いかり)シンジ君がよく聴いていたのがこれ。 さて、何…

2036年問題とは

2036年問題について書きましょう。Windowsでは、Windows2000以降(もちろん今のWindows10なども)、インターネット上のタイムサーバー(あちこちにある。コンピュータで動く、これもソフトウェアです)を利用してパソコンの内部時計を定期的に正しい時刻に修…

プログラミングのすすめ。数学も勉強しましょう。

今回はプログラミングのすすめ……ということで少し書いてみます。 「ゲームをするのが好き」も、いいことでしょう。ゲームをやらない人より、人生を面白くする何かを少なくともひとつ余分に知っているわけだから。しかし音楽だって聴くだけでなく自分で演奏す…

隠線処理、zバッファ法

3角形が4角形の手前にあります。3角形は一部が4角形に隠されて見えます。コンピュータで描画する場合、隠れて見えないはずの線や面を描いてはいけません。隠線処理、隠面処理と言います。方法はいくつかありますが、すぐ思いつくのは視線の通る3角形上の点…

画像処理の話

写真の1枚目と2枚目の写真、何が違っていると思いますか? 2枚目は1枚目より見づらい感じです。でもぼやけてるわけではない。2枚目のような画像は「コントラストが低い」と言います。コントラストとは画像の最も明るい点と暗い点の明るさの差。平たく言うと…

数式を入力できる電卓の仕組み

100均の電卓で「2+3×4=」と打つと「2+3×」の段階で「5」と表示され、続けて「4=」と打つと「20」と出ます。数式の計算としては誤っていることに注意してください。正解は14です。×、÷は+、-に優先して計算しなければならないのでした。しかし電卓は入…

インタプリタを作る

専門ではないので説明が曖昧な部分もありますが、勘弁してください。ぼくはソフトを書くのが趣味なんですが、何年か前、インタプリタ作りにはまっていました。とにかく面白かったです。 例えばCという言語では、for(i = 1, s = 0; i <= 10; i++){ s += i;}と…