MATLABプログラミング 質問箱 その1
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://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デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGこのスレにお世話になることあると思うんで、盛り上げていきましょう。
0004デフォルトの名無しさん
NGNGって、俺はほとんど使ったこと無いけど。
普段は octave 使ってる。
0005デフォルトの名無しさん
NGNGもしかしたら >3 と知り合いかも。
・・・って、音響やっててMatlab使っているなんてたくさんいるか。
0007デフォルトの名無しさん
NGNGかくいう俺も音響関係の研究室に所属。信号処理関連のライブラリは魅力的だなあ。
0008デフォルトの名無しさん
NGNGその研究室の先生が教授を辞めてしまった。
0009デフォルトの名無しさん
NGNGFORTRANと比べたらそりゃそうだろう。
けどC/C++/Javaなどと比べたら(ry
0010デフォルトの名無しさん
NGNG東京23区内か?
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG思ったらPerl程度のものしかできなくて萎えた
0013デフォルトの名無しさん
NGNGソースをぱっと見ただけで
それが関数であるのか、配列であるのか、ベクトルであるのか
解らないところだね。
C/C++/Javaならすぐにわかるのに
0014デフォルトの名無しさん
NGNGいくら音響やっててMATLAB使ってるのがたくさんいるからといって
MATLABだけで音響ソフトを作るのはハズカシイ
0015デフォルトの名無しさん
NGNG思いついたアイディアをすぐに形にできて、実験できるのがいいところ。
その後に自分で書くなり外部のプログラマを雇うなりしてC/C++で最適化します。
0016デフォルトの名無しさん
NGNG今まで音響の研究室見てきたけれど
雇ってもろくなもんができない罠。
本格的にやろうとすればするほど金がかかるからね。
100〜500万じゃ雇っても無駄。
プログラマという職についてみればあのソフトには何100万じゃ足りないということがわかてしまう
0017デフォルトの名無しさん
NGNG自分の研究成果を組み込み機器に取り入れたがるうえに
かつ考え方が古いので
いつまでもC言語にこだわる。
0018デフォルトの名無しさん
NGNG1人月30万で3人でチーム組んだとすると
一ヶ月でその100万が消えてしまう。
その三人が無能だったら使えないソフトしか作れない。
0019デフォルトの名無しさん
NGNG対話形式やウィザード、スクリプトが大好きで
設計が苦手な傾向にあるようだ。
彼らには型の違いに厳しいC/C++/Javaという言語が苦手だという傾向もある。
0020デフォルトの名無しさん
NGNGMATLAB付属以外のものを
使ってる香具師いる?
0021デフォルトの名無しさん
NGNG個人としてはMatlabよりはCを使うことが多いんだけど、
Matlabの優秀さは認めています。
基本的な数学がわかっていればプログラミングの訓練を
しなくても短期間でそれなりのことができちゃうからね。
Matlabの初(?)スレとしてはお勧め書籍とか値段とかを書くのがよいのかも。
0022デフォルトの名無しさん
NGNGこの本、ほとんどがDSPのことばかり
でMATLABのことやソースコードは
ほとんど載っていなかった。
0023デフォルトの名無しさん
NGNG熱心に使おうという気が起きない。
0024デフォルトの名無しさん
NGNGプログラムはCとかで書いた方が速いし
0025デフォルトの名無しさん
NGNG> matlabは主にデータのプロット用だね
あはは。ちょっと贅沢なgnuplot、ってところか。
0026デフォルトの名無しさん
NGNG学会発表とか授業のプレゼン準備とかにMatlabでプロット作成してます。
EPSに吐けるし、いろいろと細かいところまでいじれるのがいいですね。
0027デフォルトの名無しさん
NGNG同じことをやってるひとがいるとは
0028デフォルトの名無しさん
NGNGデータ形式はどのようなものを用意して、どのようなコマンドでプロットすればよいのでしょうか?
0029デフォルトの名無しさん
NGNGMATLABの「LMI Control Toolbox」のLMIエディッタというのはどう言う風に使えばいいのか・・・
初めて触ったけど全然わからない;;
これ使ったら行列不等式とけるってわけではないのかな?Orz
0030デフォルトの名無しさん
NGNGを表示したい場合はどのようにすればよいのでしょうか?
0031デフォルトの名無しさん
NGNGx=0:0.1:pi;
y=0:0.1:2*pi;
[X,Y]=meshgrid(x,y);
surf(X,Y,sin(X).*cos(Y));
0032デフォルトの名無しさん
NGNGWarning: 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たとえば
A=[1 0;0 1]
B=[0 0;1 1]
C=[0 1;1 0]
A*B*X+C>0
になるようなX
とか><
ぜんぜんわかんない〜;;
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG左辺が対称行列じゃなきゃダメ。
0037大学生くん
NGNGどなたか教えてください。
DCTを使ってどうにかできないものなのでしょうか?
0038デフォルトの名無しさん
NGNGCやC++などでやるのがよろしいんじゃなくて?
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGもちろん使っているコマンドだかオプションは
deps2cとかいうやつだよな?
カラーでな。
みんなeps使わず出力された
ポップアップウィンドウから
マウスでコピペしてる奴ばかり。
一つのグラフ書くたびに
毎回Xtick, Ytickを指定しset(’gca' とか
をコピペして
効率悪すぎ。
クラス作れなくても関数くらい作れや。
攻めてforとかwhileループとか
使って効率化くらいしたらどうだ
っていいたくなる奴ばかり。
0041デフォルトの名無しさん
NGNGシミュレーションに使うには
重たくて使いにくそうだな
0042デフォルトの名無しさん
NGNGつーか数値計算や信号処理の本でも嫁
0043デフォルトの名無しさん
NGNGシェルで
demoと入力して
エンターを押せ
そこに答えが見つかる
0044デフォルトの名無しさん
NGNG他の作業ができないのですが、matlabでディスプレイ上に表示させないで、aviムービーを作成することは可能でしょうか?
0045Mach Go! Go! ◆6opQoo0UZg
NGNG表示内容はなんですか?
画像データとかであれば表示させずにimage変数内で用意して書き出せるんですが。
004644
NGNG例えばこのようなものです
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
NGNGttp://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ところで、皆は行列計算時に Out of memory が出たら
どう対応してる?よく repmat でメモリ不足して困る。
今のところ行列を適当に小行列に分解し、for ループで
まわしてるんだが、やはり遅さは否めない。
なんとかならんものかのぅ...
0050デフォルトの名無しさん
NGNG>どう対応してる?
そっち面がシビアなものにはMatlabは使わない。
0051デフォルトの名無しさん
NGNG以下を参照。
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どうもありがとうございます。無事できました。
が、サイズがとても小さいのですが、大きくする方法はないのでしょうか。
GUIの場合は、windowを大きくすれば良かったのですが...
0053デフォルトの名無しさん
NGNGそうか...
そう大規模でもないんだがなぁ。たかだか400サンプルを
もとに計算しているだけだが、如何せん途中で大規模な
行列が生じるためにOut of memory...
ネックになっている行列操作だけ C で書いて走らせるか
なぁ。Optimization Toolbox が使いたいから、MATLABを
諦めきれん。
0054Mach Go! Go! Go! ◆6opQoo0UZg
NGNGメモリ管理に関してのTech Noteなんてのを見つけましたが、参考になりますでしょうか?
ttp://www.mathworks.com/support/tech-notes/1100/1106.html
「変数は連続したメモリ空間にしか確保できないので、メモリを大量に使用することが分かっている場合は、あらかじめhoge = zeros(n,m)で確保しておくべし」ということらしいですが。
0055デフォルトの名無しさん
NGNGそんなフィルタ、何使えばいい?
0056Mach Go! Go! Go! ◆6opQoo0UZg
NGNG[b, a] = butter(3, [0.4 0.6]);
y = filter(b, a, x);
0057デフォルトの名無しさん
NGNGわざわざ探してくれてありがとう.
扱う行列がでかすぎるのが問題なんだよね.
WS.調べたけど,1Gメモリ積んでても連続領域が460M
ちょいしかなかったのが原因だろうな.Windows 起動
時でそれなので,460M を越えないサイズで計算させる
しかないね.
せっかく計算をベクトル化したのになぁ(´・ω・`)ショボーン
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGMATLABでJavaをよみこんでいるのか?
だったらJava単体コードを実行したときには
java.lang.OutOfMemoryErrorはでないのか?
0060デフォルトの名無しさん
NGNG>MATLABでJavaをよみこんでいるのか?
GUI周りはJava使ってるよ。
0061Mach Go! Go! Go! ◆6opQoo0UZg
NGNG>49さんは「ところで」の部分から違う話題に入ったっぽいので、
Javaとメモリ不足とは関係ないみたいです。
R13くらいからのMatlabではJavaのGUIコマンドを実行することもできるようになってるみたいです。
Swingを使ってウィンドウを出したりして遊んだことがあります。
0062デフォルトの名無しさん
NGNG0063matlab help!!
NGNGhighpass 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デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG0066matlab help!!
NGNG0067choix ◆pnCm4bpG3Y
NGNG>> [B1, A1] = butter(2, 1000, 'high', 's');
じゃダメですか?
0068デフォルトの名無しさん
NGNGdx(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平均については1を足せばいいとわかりました。
0071デフォルトの名無しさん
NGNG正規化できる。 すなわち、Zは正規分布N(0, 1)に従う。
であるから、 Z〜N(0, 1)なる正規乱数に対して、 X = σZ+μ と置けば平均μ、分散
σ×σの正規乱数が生成できる。
要するに、出来た乱数に2をかけて1を足せばいいのだ。
基本中の基本と思うけど。
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG実装されているACF(AutoCorrelationFunction)の使いかたがわかりません。
[ACF]=acf(Z,N)
とあり引数はZ=Signal,N=# of coefficientsと書いてあります。
Nには何を入れれば良いのでしょう…
0074デフォルトの名無しさん
NGNG約-21億から約21億までの値を
一個づつNに代入しながら
確かめてみよう。
0075デフォルトの名無しさん
NGNG時間軸にある相関関数の数
0076デフォルトの名無しさん
NGNGMatlab一般って本はあまりないと思うぞ。
坂和先生の本とかは一般論に近いけど、僕はそんなに良いとは思わない。
分野を限定したら色々ある。
大学とかだと先輩が書いたマニュアルが便利なことが多いと思う。
007773
NGNGレスさんくすこ
相関関数の数ってデータ系列から判断できるものなの?
勉強不足か…逝ってきます orz
0078デフォルトの名無しさん
NGNG付属のマニュアルとオンラインヘルプとデモ
まじめに書いてあるし、下手な入門書よりわかりやすいと思う
0079デフォルトの名無しさん
NGNGこれはhist(x1),hist(x2)の後や中に、何のコマンドを書けばいいんでしょうか?
0080デフォルトの名無しさん
NGNGどうやるんでしょうか?
0081デフォルトの名無しさん
NGNG質問の意味がいまいちはっきりしないんだけど
x = rand(100,1) * 4 - 2;
y = x .^ 3;
っていうことなのかな。
0082デフォルトの名無しさん
NGNG同時に二つ書くというのはどういう状態がほしいんですか?
色違いの棒グラフが並んでいるようなイメージですか?
それだったら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同一のグラフに描くをいうのがありますね。
それをx^3でやれというんです。(ちょっと違いますが)
乱数なら簡単なんですが、任意の関数からサンプルを取るとなるとわかんなくて。
0084デフォルトの名無しさん
NGNG>>80
の方です。
0085デフォルトの名無しさん
NGNG参考になりました。ありがとうございました。
重ねることは出来ないんですね。
0086デフォルトの名無しさん
NGNG重ねようと思えば
hist(x1)
hold on
hist(x2)
でできますが、意図した結果にならないかもしれません。
0087デフォルトの名無しさん
NGNGやっぱりいまいち分からんのですが、こういうことですか?
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乱数を使えばいいんですね〜。
TAに質問したら、y=e(-x)の場合を考えてみろとかかれました。
e(-x)の関数の分布の形に乱数を発生させるのってどうすればいいんですか?
どう乱数を変換すればいいんですかね?
0089デフォルトの名無しさん
NGNGxに均一な乱数を生成して、それをexp(-x)に入れれば、
y=exp(-x)からの出力yはその分布に従うと思うのですが。
x = rand(10000, 1) * 3; % [0, 3]の一様乱数生成
y = exp(-x);
hist(y, 100); % 分布を表示
>>86の後半でやっていることも同じですね。
0090迷える大学生
NGNG大学でscilabを使う問題が出されたのですがまったく無知ゆえさっぱりです
どうか住人の方のお力をお借りしたいです
aシューティングメソッドを使って解け
b有限差分法を使って解け
y''=-2y'-4y
y(0)=2
y(1)=2
0091デフォルトの名無しさん
NGNG授業で出された問題だったら「まったくの無知」というのもおかしな話なので、
大学の先生に質問してみましょう。
0092デフォルトの名無しさん
NGNG宿題スレとちゃうって。
0093デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGしかもスレ違いなんだし。
0096デフォルトの名無しさん
NGNG下の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なんでだめなんすかね?
0098matlab help!!
NGNG可能な限りのsquare waveを維持しながら、
可能な限りのノイズを吸収するするフィルターを作ろうとしてます。
バターワースもしくはChebyshev1 のフィルターのハイパス、ローパス
バンドパスかnotchを使ってフィルターを作りたいんですが、下のコードの
A,Bに入れるcodeがわかりません。 どなたかわかりますか?
0099matlab help!!
NGNGt = 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);
0101choix
NGNG奇数倍の周波数に倍音成分が入っているので、
単純なbutterやchebyフィルタじゃ取り出せないと思います。
各倍音成分を取り出せるようなフィルタを考えてみましょう。
■ このスレッドは過去ログ倉庫に格納されています