トップページ⇒tech
1001コメント336KB

MATLABプログラミング 質問箱 その1

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
MATLAB 日本語版
http://www.cybernet.co.jp/matlab/
MATLAB 本家
http://www.mathworks.com/

Yahoo MATLAB
http://dir.yahoo.co.jp/Science/Mathematics/Software/MATLAB/
MATLAB入門
http://feedback.mech.fukui-u.ac.jp/matlab/matlab0.htm
MATLAB チュートリアル
http://www-isys.eei.metro-u.ac.jp/~sho/pub/ttmatlab/Index.html
0002デフォルトの名無しさんNGNG
2get
0003デフォルトの名無しさんNGNG
おおこんなスレが! 僕は大学で音響の研究してます。
このスレにお世話になることあると思うんで、盛り上げていきましょう。
0004デフォルトの名無しさんNGNG
ほう。こんなスレが。
って、俺はほとんど使ったこと無いけど。

普段は octave 使ってる。
0005デフォルトの名無しさんNGNG
僕も大学で音響の研究してます。
もしかしたら >3 と知り合いかも。
・・・って、音響やっててMatlab使っているなんてたくさんいるか。
0006デフォルトの名無しさんNGNG
げっ。俺も音響でMATLABつかっているorz。
>>3や>>5が同じ研究室のヤツだったらやだな
0007デフォルトの名無しさんNGNG
俺はFortran90使っているけど、行列の扱いやすさだとやっぱりMATLABの方が上なんだろうか?
かくいう俺も音響関係の研究室に所属。信号処理関連のライブラリは魅力的だなあ。
0008デフォルトの名無しさんNGNG
以前音響の研究室でMatlab使ってた。
その研究室の先生が教授を辞めてしまった。
0009デフォルトの名無しさんNGNG
>>7
FORTRANと比べたらそりゃそうだろう。
けどC/C++/Javaなどと比べたら(ry
0010デフォルトの名無しさんNGNG
>>5-6
東京23区内か?
0011デフォルトの名無しさんNGNG
音響以外にもデータの解析にMATLABつかってる研究室あったな。
0012デフォルトの名無しさんNGNG
MATLABでオブジェクト指向やってみようと
思ったらPerl程度のものしかできなくて萎えた
0013デフォルトの名無しさんNGNG
MATLABの嫌なところは
ソースをぱっと見ただけで
それが関数であるのか、配列であるのか、ベクトルであるのか
解らないところだね。
C/C++/Javaならすぐにわかるのに 
 
0014デフォルトの名無しさんNGNG
>>5
いくら音響やっててMATLAB使ってるのがたくさんいるからといって
MATLABだけで音響ソフトを作るのはハズカシイ
0015デフォルトの名無しさんNGNG
そうそう、しょせんMatlabはプロトタイピング用です。
思いついたアイディアをすぐに形にできて、実験できるのがいいところ。
その後に自分で書くなり外部のプログラマを雇うなりしてC/C++で最適化します。
0016デフォルトの名無しさんNGNG
プロトタイピング用というより解析用。

今まで音響の研究室見てきたけれど
雇ってもろくなもんができない罠。
本格的にやろうとすればするほど金がかかるからね。
100〜500万じゃ雇っても無駄。

プログラマという職についてみればあのソフトには何100万じゃ足りないということがわかてしまう

0017デフォルトの名無しさんNGNG
古くから音響系やっている者は
自分の研究成果を組み込み機器に取り入れたがるうえに
かつ考え方が古いので
いつまでもC言語にこだわる。
0018デフォルトの名無しさんNGNG
100万でソフトを作らせて
1人月30万で3人でチーム組んだとすると
一ヶ月でその100万が消えてしまう。
その三人が無能だったら使えないソフトしか作れない。
0019デフォルトの名無しさんNGNG
MATLABをこよなく愛する人たちは
対話形式やウィザード、スクリプトが大好きで
設計が苦手な傾向にあるようだ。

彼らには型の違いに厳しいC/C++/Javaという言語が苦手だという傾向もある。

0020デフォルトの名無しさんNGNG
MATLABの開発環境で
MATLAB付属以外のものを
使ってる香具師いる?
0021デフォルトの名無しさんNGNG
僕は制御をやっています。
個人としてはMatlabよりはCを使うことが多いんだけど、
Matlabの優秀さは認めています。
基本的な数学がわかっていればプログラミングの訓練を
しなくても短期間でそれなりのことができちゃうからね。

Matlabの初(?)スレとしてはお勧め書籍とか値段とかを書くのがよいのかも。

0022デフォルトの名無しさんNGNG
MATLABによるDSP入門

この本、ほとんどがDSPのことばかり
でMATLABのことやソースコードは
ほとんど載っていなかった。
0023デフォルトの名無しさんNGNG
MATLABは大規模プログラミングに向いていないから
熱心に使おうという気が起きない。
0024デフォルトの名無しさんNGNG
matlabは主にデータのプロット用だね

プログラムはCとかで書いた方が速いし
0025デフォルトの名無しさんNGNG
>>24
> matlabは主にデータのプロット用だね
あはは。ちょっと贅沢なgnuplot、ってところか。
0026デフォルトの名無しさんNGNG
>24
学会発表とか授業のプレゼン準備とかにMatlabでプロット作成してます。
EPSに吐けるし、いろいろと細かいところまでいじれるのがいいですね。
0027デフォルトの名無しさんNGNG
>>24
同じことをやってるひとがいるとは
0028デフォルトの名無しさんNGNG
水流の3次元データの可視化の方法がよくわかりません。
データ形式はどのようなものを用意して、どのようなコマンドでプロットすればよいのでしょうか?
0029デフォルトの名無しさんNGNG
自分は制御のシミュレーションでMATLAB使おうとしてます。
MATLABの「LMI Control Toolbox」のLMIエディッタというのはどう言う風に使えばいいのか・・・
初めて触ったけど全然わからない;;
これ使ったら行列不等式とけるってわけではないのかな?Orz
0030デフォルトの名無しさんNGNG
surfの使い方がよくわかりません。例えばz=sin(x)cos(y)
を表示したい場合はどのようにすればよいのでしょうか?
0031デフォルトの名無しさんNGNG
>>30
x=0:0.1:pi;
y=0:0.1:2*pi;
[X,Y]=meshgrid(x,y);
surf(X,Y,sin(X).*cos(Y));
0032デフォルトの名無しさんNGNG
fedora 2 に matlab 6 release 12 を入れたのですが matlab を起動すると
Warning: Unable to load Java Runtime Environment: /usr/local/matlab/sys/java/jre/glnx86/jre/lib/i386/native_threads/libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference.
Warning: Disabling Java support.
ってエラーが出て GUI が起動しません
だれか fedora 2 で GUI を使えている人いますか?
0033デフォルトの名無しさんNGNG
MATLABでLMIの計算とかってどうやってやるか教えてください
たとえば
A=[1 0;0 1]
B=[0 0;1 1]
C=[0 1;1 0]
A*B*X+C>0
になるようなX
とか><
ぜんぜんわかんない〜;;
0034デフォルトの名無しさんNGNG
OK、お勧めの参考書を聞こうか
0035デフォルトの名無しさんNGNG
つっかもうぜ!
0036デフォルトの名無しさんNGNG
>>33
左辺が対称行列じゃなきゃダメ。
0037大学生くんNGNG
MATLABで変形離散コサイン変換(MDCT)のプログラムを作りたいのですが、
どなたか教えてください。
DCTを使ってどうにかできないものなのでしょうか?
0038デフォルトの名無しさんNGNG
>>37
CやC++などでやるのがよろしいんじゃなくて?
0039デフォルトの名無しさんNGNG
3次元データを透過曲面を使って表示するにはどうしたらよいのでしょうか?
0040デフォルトの名無しさんNGNG
>>26
もちろん使っているコマンドだかオプションは
deps2cとかいうやつだよな?

カラーでな。

みんなeps使わず出力された
ポップアップウィンドウから
マウスでコピペしてる奴ばかり。

一つのグラフ書くたびに
毎回Xtick, Ytickを指定しset(’gca' とか
をコピペして
効率悪すぎ。

クラス作れなくても関数くらい作れや。
攻めてforとかwhileループとか
使って効率化くらいしたらどうだ
っていいたくなる奴ばかり。

0041デフォルトの名無しさんNGNG
>>29
シミュレーションに使うには
重たくて使いにくそうだな
0042デフォルトの名無しさんNGNG
>>37
つーか数値計算や信号処理の本でも嫁
0043デフォルトの名無しさんNGNG
>>39
シェルで
demoと入力して
エンターを押せ

そこに答えが見つかる
0044デフォルトの名無しさんNGNG
getframeでアニメーションを作成しているのですが、作成中は、matlabを最前面に表示しておかなければならず、
他の作業ができないのですが、matlabでディスプレイ上に表示させないで、aviムービーを作成することは可能でしょうか?
0045Mach Go! Go! ◆6opQoo0UZg NGNG
>44
表示内容はなんですか?
画像データとかであれば表示させずにimage変数内で用意して書き出せるんですが。
004644NGNG
>>45さんどうもありがとうございます

例えばこのようなものです

Z = peaks; surf(Z)
axis manual      % Axes の範囲を固定します。
set(gca,'nextplot','replacechildren');
M = moviein(20);
for j = 1:20
    surf(sin(2*pi*j/20)*Z,Z)
    M(:,j) = getframe;
end
0047Mach Go! Go! Go! ◆6opQoo0UZg NGNG
調べてみたら、画面表示なしにMatlab Tech Noteに載っていました。

ttp://www.mathworks.com/support/tech-notes/1200/1204.html#Section%2010

二次元ではできてももしかしたら三次元だとできない、とかそういう制約があるかもしれませんね。
0048Mach Go! Go! Go! ◆6opQoo0UZg NGNG
途中で書き込みしてしまいました。

>調べてみたら、画面表示なしにMatlab Tech Noteに載っていました。

調べてみたら、画面表示なしにムービーを作る方法がMatlab Tech Noteに載っていました。
0049デフォルトの名無しさんNGNG
MATLABの java がエラー吐くのは微妙に気になる。

ところで、皆は行列計算時に Out of memory が出たら
どう対応してる?よく repmat でメモリ不足して困る。

今のところ行列を適当に小行列に分解し、for ループで
まわしてるんだが、やはり遅さは否めない。

なんとかならんものかのぅ...
0050デフォルトの名無しさんNGNG
>>49
>どう対応してる?
そっち面がシビアなものにはMatlabは使わない。
0051デフォルトの名無しさんNGNG
>>32
以下を参照。
http://www.linuxquestions.org/questions/showthread.php?s=&forumid=7&threadid=183462
www.blackdown.org からj2re1.3.1をとってきて入れて、適当にパスを張って
ln -s /where-you-install-blackdownjava/j2se/1.3.1/jre /local-matlab-dir/sys/java/jre
環境変数を
export LD_ASSUME_KERNEL=2.4.19
とすれば、fedora core 2でmatlab12が動くようになる。
多分、上のリンクの
export LD_PRELOAD=~/libcwait.so
の部分はやらなくてもうまくいった。
0052デフォルトの名無しさんNGNG
>>47さん
どうもありがとうございます。無事できました。
が、サイズがとても小さいのですが、大きくする方法はないのでしょうか。
GUIの場合は、windowを大きくすれば良かったのですが...
0053デフォルトの名無しさんNGNG
>>50
そうか...

そう大規模でもないんだがなぁ。たかだか400サンプルを
もとに計算しているだけだが、如何せん途中で大規模な
行列が生じるためにOut of memory...

ネックになっている行列操作だけ C で書いて走らせるか
なぁ。Optimization Toolbox が使いたいから、MATLABを
諦めきれん。
0054Mach Go! Go! Go! ◆6opQoo0UZg NGNG
>49
メモリ管理に関してのTech Noteなんてのを見つけましたが、参考になりますでしょうか?
ttp://www.mathworks.com/support/tech-notes/1100/1106.html

「変数は連続したメモリ空間にしか確保できないので、メモリを大量に使用することが分かっている場合は、あらかじめhoge = zeros(n,m)で確保しておくべし」ということらしいですが。
0055デフォルトの名無しさんNGNG
ガウスノイズに対して、帯域制限フィルタをかけて、滑らかな曲線にするような・・・
そんなフィルタ、何使えばいい?
0056Mach Go! Go! Go! ◆6opQoo0UZg NGNG
単純なIIRフィルタじゃだめでしょうか?
[b, a] = butter(3, [0.4 0.6]);
y = filter(b, a, x);
0057デフォルトの名無しさんNGNG
>>54
わざわざ探してくれてありがとう.

扱う行列がでかすぎるのが問題なんだよね.
WS.調べたけど,1Gメモリ積んでても連続領域が460M
ちょいしかなかったのが原因だろうな.Windows 起動
時でそれなので,460M を越えないサイズで計算させる
しかないね.

せっかく計算をベクトル化したのになぁ(´・ω・`)ショボーン
0058デフォルトの名無しさんNGNG
新バージョンはいつ頃出るのでしょうか?
0059デフォルトの名無しさんNGNG
>>49
MATLABでJavaをよみこんでいるのか?
だったらJava単体コードを実行したときには
java.lang.OutOfMemoryErrorはでないのか?

0060デフォルトの名無しさんNGNG
>>59
>MATLABでJavaをよみこんでいるのか?
GUI周りはJava使ってるよ。
0061Mach Go! Go! Go! ◆6opQoo0UZg NGNG
>59

>49さんは「ところで」の部分から違う話題に入ったっぽいので、
Javaとメモリ不足とは関係ないみたいです。
R13くらいからのMatlabではJavaのGUIコマンドを実行することもできるようになってるみたいです。
Swingを使ってウィンドウを出したりして遊んだことがあります。
0062デフォルトの名無しさんNGNG
レンダラーはopenglが一番いい結果になるの?
0063matlab help!!NGNG
すいません。自分は、corner frequencyが1kHzで4th orderの
highpass butterworth filterをデザインしようとしてます。
同じ設定のlowpass filterをデザインすることはできたんですが、
そこから、highpass filterに変換することができません。誰かご存知だったら、
お願いします。lowpassのコードはこれです。

>> [B1,A1]=butter(2,1000,'s');
>> f=logspace(2,5);
>> h1=freqs(B1,A1,f);
>> mag1=20*log10(abs(h1));
>> semilogx(f,mag1),grid;

0064デフォルトの名無しさんNGNG
Ripple ってなんですか?
0065デフォルトの名無しさんNGNG
広がりながら飛ぶ環状のビーム
0066matlab help!!NGNG
いまだ苦戦してます。まじプリーズです。
0067choix ◆pnCm4bpG3Y NGNG
おとなしいスレなんだから、たった2時間で回答が来ると期待しない方がいいですよ。
>> [B1, A1] = butter(2, 1000, 'high', 's');
じゃダメですか?
0068デフォルトの名無しさんNGNG
Matlab(Octave)で以下の式をシミュレートしたいのですがどの様な手順で進めるたらいいか、どなたか救いの手をよろしくお願いします。

dx(i)/dt = P(i) - k(i)x + a(i)x(i) - b(SUMx(j))

ここでxは2つあり、x=1の時は以下の式で解を求めます。
When D <> 0
x1(t) = (Ps/2S + Pd/2D) + (x1(0) - Ps/2S)e^(-St) - (Pd/2D)e^(e-Dt)

When D = 0
x1(t) = xd(0) + Pdt/2 + Ps/2S + (xs(0) - Ps/2S)e^(-St),

where
S = k + B;
D = k - B;
xs=x1+x2;
xd=x1- x2;
Ps = P1+ P2;
Pd = P1- P2;

x=2の場合、Pd -> -Pd, x1 -> x2, xd -> -xdとし、同じ様に解を求めます。
0069デフォルトの名無しさんNGNG
randn()で発生させた正規乱数は平均0分散1ですが、これを平均1分散4にするには?
平均については1を足せばいいとわかりました。
0070choix ◆pnCm4bpG3Y NGNG
>>69
かけ算を使うといい。
0071デフォルトの名無しさんNGNG
正規分布N(μ,σσ) [<- σの2乗]に従う確率変数Xは Z = (X-μ)/σ と置くことで
正規化できる。 すなわち、Zは正規分布N(0, 1)に従う。

であるから、 Z〜N(0, 1)なる正規乱数に対して、 X = σZ+μ と置けば平均μ、分散
σ×σの正規乱数が生成できる。

要するに、出来た乱数に2をかけて1を足せばいいのだ。

基本中の基本と思うけど。
0072デフォルトの名無しさんNGNG
matlabを学ぶのに最適な本を教えてください
0073デフォルトの名無しさんNGNG
自己相関関数を求めたいのですが、
実装されているACF(AutoCorrelationFunction)の使いかたがわかりません。
[ACF]=acf(Z,N)
とあり引数はZ=Signal,N=# of coefficientsと書いてあります。
Nには何を入れれば良いのでしょう…
0074デフォルトの名無しさんNGNG
そいつはxcorr より使いやすいのか?

約-21億から約21億までの値を
一個づつNに代入しながら
確かめてみよう。



0075デフォルトの名無しさんNGNG
>73
時間軸にある相関関数の数
0076デフォルトの名無しさんNGNG
>>72
Matlab一般って本はあまりないと思うぞ。
坂和先生の本とかは一般論に近いけど、僕はそんなに良いとは思わない。
分野を限定したら色々ある。

大学とかだと先輩が書いたマニュアルが便利なことが多いと思う。

007773NGNG
>>75
レスさんくすこ
相関関数の数ってデータ系列から判断できるものなの?
勉強不足か…逝ってきます orz
0078デフォルトの名無しさんNGNG
>>72
付属のマニュアルとオンラインヘルプとデモ

まじめに書いてあるし、下手な入門書よりわかりやすいと思う
0079デフォルトの名無しさんNGNG
2つの分布関数から得られた各1000個の数字のヒストグラムを同時に2つ同じヒストグラフにかく。
これはhist(x1),hist(x2)の後や中に、何のコマンドを書けばいいんでしょうか?
0080デフォルトの名無しさんNGNG
関数y=x^3からyのサンプルデータをxを[-2,2]の範囲で100個取りなさい。

どうやるんでしょうか?
0081デフォルトの名無しさんNGNG
>>80
質問の意味がいまいちはっきりしないんだけど
x = rand(100,1) * 4 - 2;
y = x .^ 3;
っていうことなのかな。
0082デフォルトの名無しさんNGNG
>>79
同時に二つ書くというのはどういう状態がほしいんですか?
色違いの棒グラフが並んでいるようなイメージですか?
それだったらhistじゃなくて以下のような感じでもいいかも。

x1 = randn(1000, 1);
x2 = randn(1000, 1) * 2 + 1.5;
edges = -4:0.5:4;
h1 = histc(x1, edges);
h2 = histc(x2, edges);
bar(edges, [h1 h2]);
0083デフォルトの名無しさんNGNG
よく、乱数ではサンプルの統計のhistとその分布関数のグラフの図を
同一のグラフに描くをいうのがありますね。
それをx^3でやれというんです。(ちょっと違いますが)
乱数なら簡単なんですが、任意の関数からサンプルを取るとなるとわかんなくて。
0084デフォルトの名無しさんNGNG
すいません、上は
>>80
の方です。
0085デフォルトの名無しさんNGNG
>>82
参考になりました。ありがとうございました。
重ねることは出来ないんですね。
0086デフォルトの名無しさんNGNG
>>85
重ねようと思えば
hist(x1)
hold on
hist(x2)
でできますが、意図した結果にならないかもしれません。
0087デフォルトの名無しさんNGNG
>>83
やっぱりいまいち分からんのですが、こういうことですか?

x1 = linspace(-2, +2, 100);
y1 = x1 .^ 3;
[n, center] = hist(y1);
plot(center, n, 'k--');
hold on;
x2 = rand(100, 1) * 4 - 2;
y2 = x2 .^ 3;
hist(y2);
0088デフォルトの名無しさんNGNG
>>87
乱数を使えばいいんですね〜。
TAに質問したら、y=e(-x)の場合を考えてみろとかかれました。
e(-x)の関数の分布の形に乱数を発生させるのってどうすればいいんですか?
どう乱数を変換すればいいんですかね?
0089デフォルトの名無しさんNGNG
>>88
xに均一な乱数を生成して、それをexp(-x)に入れれば、
y=exp(-x)からの出力yはその分布に従うと思うのですが。

x = rand(10000, 1) * 3; % [0, 3]の一様乱数生成
y = exp(-x);
hist(y, 100); % 分布を表示

>>86の後半でやっていることも同じですね。
0090迷える大学生NGNG
matlabのスレが一番近いんで多少スレ違いかもしれませんが質問させてください
大学でscilabを使う問題が出されたのですがまったく無知ゆえさっぱりです
どうか住人の方のお力をお借りしたいです
aシューティングメソッドを使って解け
b有限差分法を使って解け
y''=-2y'-4y
y(0)=2
y(1)=2
0091デフォルトの名無しさんNGNG
自分で解くべき宿題を持ってこられても困ります。
授業で出された問題だったら「まったくの無知」というのもおかしな話なので、
大学の先生に質問してみましょう。
0092デフォルトの名無しさんNGNG
>>90
宿題スレとちゃうって。
0093デフォルトの名無しさんNGNG
一人でもライバルを減らすため、私は答え続けます。
0094迷える大学生NGNG
>>91-92
カスだな。使えねーやつらめ
0095デフォルトの名無しさんNGNG
その程度の問題で他人に助けを求めるほうこそカスでしょ。
しかもスレ違いなんだし。
0096デフォルトの名無しさんNGNG
どなたかOCTAVE使ってる方いますかね?
下のMATLABの簡単なプログラムをOCTAVEで走らすのに苦闘中です。

function bdot = heatup(t,b)
global a h q w;
bdot = (q-h*(b-a))/w;
endfunction

global a h q w;
a = 18; h = 50; q =1000; w=10;
[time,bt] = ode23('heatup',0,1,30)
plot(tme,bt)

これを下の様にしたんですがグラフが見事にちがうんです。どこがいけないですか?

function bdot = heatup(t,b)
global a h q w;
bdot = (q-h*(b-a))/w;
endfunction

global a h q w;
a = 18; h = 50; q =1000; w=10;
t= linspace(0,1,100);
tb = lsode('heatup',[0],t)
plot(tb)
0097デフォルトの名無しさんNGNG
失礼 tb = lsode('heatup',[30],t)でした。
なんでだめなんすかね?
0098matlab help!!NGNG
1kHzのsquare waveを使って0dBのSNR(信号ーノイズ率)を作るためにノイズを加えた後、
可能な限りのsquare waveを維持しながら、
可能な限りのノイズを吸収するするフィルターを作ろうとしてます。
バターワースもしくはChebyshev1 のフィルターのハイパス、ローパス
バンドパスかnotchを使ってフィルターを作りたいんですが、下のコードの
A,Bに入れるcodeがわかりません。 どなたかわかりますか?
0099matlab help!!NGNG
---------------------------------------------------------------------------------
t = 0:0.00001:0.005; % Generate time index.
x = 100*square(2*pi*1000*t); % Generate square wave.
var(x) % Determine the variance of x.
pause
plot(t, x), axis([0 0.005 -150 150]); % Axis command means to plot the
% signal from 0 to 0.005 for t axis
% and from -150 to 150 for x axis.
noise = 100.0*randn(1, length(t)); % Generate gaussian (normal) noise
% signal.
var(noise) % Determine the variance of the noise.
pause
plot(t, noise), axis([0 0.005 -300 300]); % Plotting noise
pause
xn = x + noise; % Add square wave and noise.
var(xn) % Determine the variance of xn.
pause
plot( t, xn); % Plot square wave plus noise signal.
y1 = filter(B, A, xn); % Filter the noisy signal. You get B & A
% from your filter design using butter
% or cheby1, or?
plot(t, y1); % Plot filtered noisy signal.
pause
plot(t, x, t, y1); % Plot noiseless signal and filtered
% noisy signal together.
----------------------------------------------------------------------------------
0100matlab help!!NGNG
すいません読みずらいので、もう一回張ります。
---------------------------------------------------------------------------------
t = 0:0.00001:0.005;
x = 100*square(2*pi*1000*t);
var(x)
pause
plot(t, x), axis([0 0.005 -150 150])
noise = 100.0*randn(1, length(t));
var(noise)
pause
plot(t, noise), axis([0 0.005 -300 300]);
pause
xn = x + noise;
var(xn)
pause
plot( t, xn);
y1 = filter(B, A, xn);
plot(t, y1);
plot(t, x, t, y1);
0101choixNGNG
1kHzのsquare waveは3kHz、5kHz、7kHz、9kHzというように
奇数倍の周波数に倍音成分が入っているので、
単純なbutterやchebyフィルタじゃ取り出せないと思います。
各倍音成分を取り出せるようなフィルタを考えてみましょう。
■ このスレッドは過去ログ倉庫に格納されています