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
0232デフォルトの名無しさん
NGNGSimulink を使用しているのですが、途中でフレームサイズを変更することは
出来ますでしょうか?
モデルは以下のようになっています ( 簡略化してます )
Ramdom Signal Generator => Block1 => Scope
ここで、Random Signal はフレームサイズ 2048 で出力するのですが
Block1 はフレームサイズ 1024 しか受付ません。
そこで Block1 の前に何かブロックを挿入して
1. 2048 のフレームを 1024 にする
2. 1024 ずつ Block1 に渡す
3. Block1 の後で 1024 のフレームを結合して 2048 にする
ということをしたいと思っております。
こういう事はできますでしょうか?
よろしくお願いいたします。
0233デフォルトの名無しさん
NGNG自己レスです。DSP Blockset の buffer を使うことでフレームサイズの
分割と結合は出来ましたが、今度は必ず最初に値が 0 のフレームが負荷される
ようになってしまいました。
この 0 フレームが付かないようにするにはどうするのでしょうか?
0234choix ◆pnCm4bpG3Y
NGNG>されているけど、例えばtの刻み幅を0.1に指定してt=[0,0.1,0.2,0.3,…]とするときにはそれぞれの時間tのときの状態yを返しているのですよね?
そうですね。
>t=0.1ではt=[0.0098,0.101,0.110,…]のような値(状態値)を近似しているのですか?
数値解析的な解き方をしているので、ある程度の近似はしているでしょうが、ode45内部でどの状態値で近似しているのかはわかりません。
詳しく知るためにはソースコードを読むしかないでしょう。
0235デフォルトの名無しさん
NGNGどうにか実数で出力することは出来ませんか?
このままだと卒業できない・・・
0236助けて
05/01/17 17:40:53わかりました。本当にいろいろありがとうございました。
また何かあればよろしくお願いします。
0237デフォルトの名無しさん
05/01/18 17:49:21MATLABでUMLを使えるプラグインないかな。
0238デフォルトの名無しさん
05/01/20 11:31:290239助けてください・・・・
05/01/21 12:03:52とある大学生です。
自分は今卒論でMATLAB使ってるんですが、
いかんせんプログラムが苦手で困ってます。
どれくらい困ってるかと言うと、
就職決まってるのに卒研のせいでダブる危機があるくらい、
リアルにピンチです。
そこの教授も放置プレーなので、何も教えてくれません。
本当に聞いても自分で調べてくださいっと言われます。
締め切りまで2週間もないのですが、もし力を貸してくれるなら、
七世代まで神として祭り上げます。
と他力本願な俺ですね・・・叩いてもらってもいいです。すいません。
しかし、就職したいのです。だれか力を貸していただけませんか?
2-D画像に離散ウェーブレット変換をかけて例えばsをa1、d1に分解し、
さらにa1をa2,d2に分解、さらにa2をa3,d3・・・
といった具合に分解していって、sとa1〜anをそれぞれ2乗平均して、
その値にLogをかけて縦軸をlog aとこ軸を2の階上として、グラフを作り、
その傾きを求めるというプログラムを作成しろとの事なのですが、
自分には何がなにやらさっぱりわかりません。
できればプログラム作っていただく、もしくは作り方を教えていただけませんでしょうか??おねがいします。
0240デフォルトの名無しさん
05/01/21 12:11:310241デフォルトの名無しさん
05/01/21 12:14:45おい、何も教えてくれない先生なんておかしいだろ。
授業料返してもらえ。
0242デフォルトの名無しさん
05/01/21 14:58:20MATLAB使ってる院生に聞け。
0243デフォルトの名無しさん
05/01/21 15:15:46具体的にお題を与えられないとできないんじゃ、
いいとこ実験レベル。とても卒業研究とは言えまいに。
しかもそのお題の持つ意味すらわからないのでは……。
素直に留年しなさい。
0244デフォルトの名無しさん
05/01/21 15:40:250245choix ◆pnCm4bpG3Y
05/01/21 19:28:55卒業研究なんだから、それなりに基礎知識をつけているはずです。もしwaveletの「s」「a?」「d?」ですら意味が分からないのであれば、他の方々がおっしゃるように、もう一年しっかり勉強した方がいいでしょう。
後半部分に書かれているプログラムは、画像処理系の研究で10年ほど前から行なわれているのを見たことがありますし、IEEEをあたれば類似の手法はたくさん出てきますので、それらの論文も読んでみましょう。
0246デフォルトの名無しさん
05/01/21 20:38:530247デフォルトの名無しさん
05/01/21 23:28:53>2-D画像に離散ウェーブレット変換をかけて(以下略)
すげえ。ここまで親切に教えてくれる教授なんて、信じられん。
ちょっと甘やかしすぎではないか?
0248デフォルトの名無しさん
05/01/22 03:20:20最近は卒研内容を「習っていません(だからできなくても問題ない)」なんて後輩もいるんだな.
なんで研究室配属を許可しちゃっただろ(というか演習や実験の単位をあげたんだろう)…
0249まと
05/01/23 13:30:38質問です。
ファイル名を絶対パスで取ってきているのですが、
¥が入ってなかなか使いづらいのですが、最後のファイル名だけ
取るのにはどうしたらよいでしょうか???
絶対パスでとってくるGUIを手に入れたので便利だなと
思っていたら落とし穴です。
それを使ってファイル名を作れなくなった次第です。
どなたか。お助けを。
0250デフォルトの名無しさん
05/01/23 23:00:28help fileparts fullfile
0251デフォルトの名無しさん
05/01/23 23:17:50やりたいことは,多数のファイルに対して一括処理を施したいだけなのですが...作った関数は下記の通りです.
1. DataLoad_Callback():データ読み込み関数
2. DataProcessing_Callback():データ処理関数
3. BatchProcess_Callback():バッチ処理関数
3の関数をメインとして,1,2の順に呼び出して処理を行うものです.
1で読み込まれたデータは,handles構造体に格納して,2の処理関数へと渡されます.
しかし,1で格納したデータに2の関数からアクセスできません(2の関数に入った時点で,handles構造体に格納したデータは消えている).
ソースは単純化していますが,次のようなものです.
#改行が多いので,分割します.
なぜこのようなことが起こるのか教えて頂けないでしょうか?
0252デフォルトの名無しさん
05/01/23 23:19:14% データ読み込み
function DataLoad_Callback(hObject, eventdata, handles)
data = load('****.***');
handles.data = data;
guidata(hObject, handles);
% データの処理
function DataProcessing_Callback(hObject, eventdata, handles)
% この部分でhandles.dataは空となっておりエラーが発生する
data = handles.data;
処理部分(省略),結果をファイルに保存
% バッチ処理
function BatchProcess_Callback(hObject, eventdata, handles)
% こんな感じで複数のファイルを読み込み,処理をしたい
filename(1,:) = 'D:\work\dev\matlab\test1.mat';
:
filename(n,:) = 'D:\work\dev\matlab\testn.mat';
% 各ファイルに対して処理を行う
for iRow = 1:length(filename)
handles.filename = filename(iRow,:);
guidata(hObject, handles);
DataLoad_Callback(hObject, eventdata, handles)
DataProcessing_Callback(hObject, eventdata, handles)
end
0253デフォルトの名無しさん
05/01/24 16:48:210254デフォルトの名無しさん
05/01/27 01:05:410255253
05/01/27 03:59:12このスレにゃ答え出せる人居ないよ。自分で考えてください>251
以下何事もなかった如く進行。
担当者と話をすると、MATLABの発音がマツゥラヴに聞こえるマットラボ?マトラボ?
0256デフォルトの名無しさん
05/01/27 07:41:27Waveletでずいぶん釣れたね!
0257choix ◆pnCm4bpG3Y
05/01/27 09:42:42GUIDEで生成されたひな形を使ってますか?
もしそうだとしたら、コールバック関数を呼ぶときには
hogehoge('DataLoad_Callback', hObject, eventData, handles, ...);
ってやることになっていると思うんですが、
BatchProcess_Callbackの中ではコールバック関数を直接呼んでますよね。
それが原因になっていたりしませんか?
0258251
05/01/28 22:19:53できました!
ご指摘の通り,関数の呼び出しを間違えていたようです.
ありがとうございました.
0259デフォルトの名無しさん
05/01/30 10:24:33一体どんな実装になったの?
0260choix ◆pnCm4bpG3Y
05/01/30 23:31:43ファイルの圧縮も行なわれるようになりました。
0261デフォルトの名無しさん
05/02/01 16:13:36出来ないのでしょうか?教えてください、お願いします。
0262デフォルトの名無しさん
05/02/04 22:19:421
--------
1 + Z^-1
を連続の
1
--------
1 + S
に変換したいのですが、どうしたらよいでしょうか。
関数などあれば、出来れば詳しく教えてください。
お願いします。
0263デフォルトの名無しさん
05/02/05 13:12:22クライアントサイド厨はネットワーキングに疎い知ったかぶりばかりで
このスレはもとからいいスレじゃあないな。
0264デフォルトの名無しさん
05/02/05 13:16:54教えてくれないといより
プログラミングスキルが低い教授なんだろ。
たいていの場合、教授よりもIT業界で
プログラミングだけで喰っていける実践経験のある人間のほうが
そういうことには強い。
教授は新しい技術にはついていけず数学しか知らないというのが実体だよ。
教授の中でも特に50代という団塊の人間にはコンピュータが苦手な連中が多い。
古い技術にとりつかれて新しいものになかなか鞍替えできない変化に弱い人間
なだけに彼ら教授陣の能力も衰えてきている、
0265デフォルトの名無しさん
05/02/05 13:21:08> data = load('****.***');
> filename(1,:) = 'D:\work\dev\matlab\test1.mat';
> :
> filename(n,:) = 'D:\work\dev\matlab\testn.mat';
ちゃんとファイル分割しているかしらんが
もししていないならこんなハードコーディングはおすすめできんな。
ソースコードを読む側の立場になったら読むだけでも腹が立つようになってくるぞ。
0266デフォルトの名無しさん
05/02/06 01:08:30上の方にいるからまた変なのが来た。
0267デフォルトの名無しさん
05/02/07 11:34:01処理が長くて困っています。
で、↓のfor文の処理が長いようなのですが
高速化する方法ないでしょうか?
for i = 1:(X)
tmp(i,1) = moto_file(i+(10*A+3),1);
end
読み込んだデータ(mot_file)の10*A+3番目以降のデータをtmpの中に
そのまま移行させたいのです...
よい方法をご存知の方がいらっしゃいましたら
なにとぞご教授お願いします。m(_ _;)m
0268デフォルトの名無しさん
05/02/07 11:39:34上のmoto_file=mot_fileです
0269デフォルトの名無しさん
05/02/07 13:21:54tmp=moto_file((10*A+3):end);
でどうだ?
tmpは消え去るけどな。
それか、moto_fileをいじってもよければ
moto_file(1:(10*A+2))=[];
で、10*A+2までがデリートされる
0270デフォルトの名無しさん
05/02/07 13:43:57早速試してみます
0271269
05/02/07 14:24:46めちゃめちゃ早くなりましたよ!
数十分かかってたのが数秒ですよ!
ありがとうございました!!!!
0272choix ◆pnCm4bpG3Y
05/02/08 08:40:00英語文章なんですが、Mathworksのサイトに書き換えの指針がまとめてありました。
http://www.mathworks.com/support/tech-notes/1100/1109.html
0273デフォルトの名無しさん
05/02/08 21:07:540274デフォルトの名無しさん
05/02/08 21:11:45おまいはサイバーネット社のまわし者か?
0275デフォルトの名無しさん
05/02/08 21:22:350277デフォルトの名無しさん
05/02/09 10:10:33--------------------------------------------------------------------------------
The frequency response of a linear time invariant system has been
measured and can be seen in the attachment file below.
A feedback element with a transfer function, H(s), is to be
chosen so that the sysytem steady-state error to a unit step input
is equal to 0.07. What is a suitable transfer function to achieve this???
これで、frequencyとmagnitudeとphase angleの数値をざっと各30個ずつ
ぐらいもらってるんだけど、まったく分かりません。どういう過程で
transfer functionを求めていけばいいのでしょうか? matlabを使ってtransfer
functionを求められると聞いたんですけど、どういう風に数字を入れていけば
いいのでしょうか?
0278269
05/02/09 12:50:33う、英語文章苦手なんですけど
がんばって読んでみます。
情報ありがとうございますm(_ _)m
0279choix ◆pnCm4bpG3Y
05/02/09 14:30:19M系列信号を計算することはMatlabでできますが、
それを再生してマイクで拾って録音して、という部分は別のシステムを使った方がラクでしょう。
そのあとで録音データにFFTをかけて周波数特性を確認するのはMatlabでできます。
こんな流れなんですが、周波数特性の分かっているマイクとアンプを使わないと、スピーカーだけの周波数特性は計測できません。
完全なスピーカー特性をはかるには専用のデバイス類が必要になるのでかなり大変です。
0280273
05/02/10 05:09:23騒音計使うので平気なのです
アンプもフラットなので・・・・
その得られた周波数特性から逆フィルタを求めて
ソースなりに逆フィルかませるということは可能ですか?
0281choix ◆pnCm4bpG3Y
05/02/10 05:34:37別ソースにフィルタをかけることも可能です。
0282デフォルトの名無しさん
05/02/10 10:09:51contec製のADボードを使うと、入力が恐らく0.25倍、出力が2倍になってしまいます。
バージョンは2.7ですがMATLAB6.5付属の物でも同じ症状がでます。
インターフェース製のADDAボードだと問題無いのですが、これはバグか何かなのでしょうか。
0.25倍と2倍というのもテスターによって測ったあやふやなものなので詳細がわかりません。
知っている方いらっしゃいますか?
0283282
05/02/10 10:11:11使用しているボードはcontecのAD12-16Eです。
0284デフォルトの名無しさん
05/02/12 02:37:18>>232
すごい遅レスだけど,Unbufferで一旦フレームベースのデータを変換して,
その後でBufferで1024のフレームサイズに直せばいけるかな?
漏れはフレームベース使ってないから間違ってるかもしれないけど・・・
最初に0がつくのは初期値が0になってるからだと思われ。
>>235
Complex-to-Real Imagブロックで実数虚数部に分けるか
absブロックで絶対値取るかだね。
MATLABはともかくとして,Simulinker少なっ
0285デフォルトの名無しさん
05/02/21 13:43:18MetlabはVer6.1です。
0286273
05/02/22 17:51:220287デフォルトの名無しさん
05/02/24 01:59:01具体的にと聞かれても・・・( ´Д`;)
適当にプログラム組んでみて,上手くいかないところを聞くのが筋では?
全部プログラムを作ってくれ,というように聞こえるけど・・・
0288choix ◆pnCm4bpG3Y
05/02/24 09:40:18やらなきゃいけないことが重なっていっぱいいっぱいで(r
0289デフォルトの名無しさん
05/02/26 09:10:36オフスクリーンでやれば出来ないことはないが、サイズが指定できないので注意
0290デフォルトの名無しさん
05/02/26 18:12:52>> a = [ 1 2 ];
>> plot(a)
??? Undefined function or variable 'lineseriesmex'.
Error in ==> lineseries at 19
lineseriesmex;
とつれないお返事。このエラーにどう対処したらいいのでしょうか?
0291デフォルトの名無しさん
05/03/07 15:10:54遅レスだけど,Ver6.5.1だと普通にプロットできますた。
Ver7だとできないのかな・・・・
0292choix ◆pnCm4bpG3Y
05/03/09 02:03:33遅レス申し訳ない。ようやくちょっと時間ができました。
十分な長さのノイズ信号を再生した録音データには全周波数帯での応答が含まれています。
その録音データにFFTをかけてマグニチュード応答を割り出し、
それをもとにフィルタを作ります。
フィルタを作るにはYule-Walker法(yulewalk.m)なんかがラクチンです。
0293デフォルトの名無しさん
05/03/09 17:18:18Numerical Recipe 印C
をみろ
0294choix ◆pnCm4bpG3Y
05/03/09 22:16:59FFTのところか乱数生成のところ?
0295デフォルトの名無しさん
05/03/14 15:17:530296デフォルトの名無しさん
05/03/14 15:41:38自己解決
getframe
ね。
0297デフォルトの名無しさん
05/03/16 11:16:410298デフォルトの名無しさん
05/03/16 11:42:13難しい?
0299choix ◆pnCm4bpG3Y
05/03/16 13:28:45このスレの過去に似た話が出てきたのでチェックすると良いかもしれません。
>>44-48 あたりです。
>>298
意外に簡単です。
ただ、システム依存する部分はちょっと難しいです。
自分は、多チャンネル音声再生をマルチプラットフォームで
実行できるようなmexファイルを作ろうとして挫折しました。
0300デフォルトの名無しさん
05/03/17 12:55:09Matlabじゃなくて普通のCのプログラムから呼び出すには
どうしたらよろしいのでしょうか
0301choix ◆pnCm4bpG3Y
05/03/17 21:38:46英語版のホームページで言うと
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/ch_java.html
です。これはMatlabそのものを他のプログラムから利用するというものです。
参考になるかもしれません。
0302デフォルトの名無しさん
05/03/19 12:29:360303デフォルトの名無しさん
05/03/19 22:50:510304デフォルトの名無しさん
2005/03/21(月) 08:27:10f = @(x) x
みたいなことは、octave では出来ないんでしょうか?
0305デフォルトの名無しさん
2005/03/30(水) 09:52:44std=sqrt(varience);
x=std*randn(1,10)+mean*ones(1,10);
この公式分かる人いますか?
0306デフォルトの名無しさん
2005/03/30(水) 11:37:25もうちょっと情報ないの?
0307デフォルトの名無しさん
2005/03/30(水) 12:49:26何ですか?
0308デフォルトの名無しさん
2005/03/30(水) 13:08:51んですけど、出ません。どなたか何故だか分かりますか?
>> m=10;
varience=9;
stdd=sqrt(varience);
%length_10
x_10=stdd*randn(1,10)+m*ones(1,10);
subplot(4,1,1);plot(x_10)
%length_100
x_100=stdd*randn(1,100)+m*ones(1,100);
subplot(4,1,2);plot(x_100)
%length_1000
x_1000=stdd*randn(1,1000)+m*ones(1,1000);
subplot(4,1,3);plot(x_1000)
%length_10000
x_10000=stdd*randn(1,10000)+m*ones(1,10000);
subplot(4,1,4);plot(x_10000)
>>
0309choix ◆pnCm4bpG3Y
2005/03/30(水) 19:17:33とりあえず「平均mu分散sigma^2の正規分布に従う乱数列が作りたい」という質問だと想定して答えますと、以下のようなプログラムができます。
mu = 10; % 平均
variance = 9; % 分散
sigma = sqrt(variance); % 標準偏差
x = randn(1, 10000); % 平均0.0分散1.0の正規分布乱数を生成
x = (x * sigma) + mu; % 平均mu分散sigma^2に移動
hist(x, 50); % ヒストグラム表示
この後、std(x)やvar(x)で指定した標準偏差や分散値に近い値になっていることが確認できます。
0310デフォルトの名無しさん
2005/03/31(木) 04:01:250311デフォルトの名無しさん
皇紀2665/04/01(金) 19:32:510312デフォルトの名無しさん
2005/04/12(火) 15:27:190313デフォルトの名無しさん
2005/04/24(日) 16:00:41面白そうじゃん。
0314デフォルトの名無しさん
2005/04/27(水) 09:00:110315科学者の端くれ
2005/04/27(水) 10:37:580316デフォルトの名無しさん
2005/04/29(金) 18:00:17大きな行列を使った関数をたくさん呼んでるんですが、
値渡しのコストが大きそうな感じ。
値渡しを避けるには変数をglobalにするしか方法はないんでしょうか?
0317デフォルトの名無しさん
2005/05/01(日) 14:35:43演算がコピーしてるじゃないの?
コンパイラの最適化の話じゃない?
0318デフォルトの名無しさん
2005/05/08(日) 19:18:37購入を検討しているのですが。
0319デフォルトの名無しさん
2005/05/08(日) 21:08:48サイバネットに聞け。マジで。
toolboxの組み合わせが膨大で、ここで答えられる範疇を超えてる。
0320デフォルトの名無しさん
2005/05/08(日) 23:37:13本国だと学生向けアカデミックパッケージがだいたい100ドルくらいだけど、
グループライセンスはウェブには価格が出てないね。たいていは大学全体での
サイトライセンスなんじゃないかな。
0321デフォルトの名無しさん
2005/05/09(月) 00:26:26MATLABのグループライセンスの場合、
LAN内にライセンスサーバを一台立てて、同時使用数とかのチェックが入るから
大学全体だと数が多すぎて微妙だったりするので
研究室単位でライセンスを買ってるところも結構ある。
0322デフォルトの名無しさん
2005/05/09(月) 02:07:04もれの研究室がライセンス持っているみたいだけど、他の研究室は持ってないみたい。
ちなみに、研究目的で自分のノートPCにインストールして、自宅でするのは合法?
ってライセンスの組み合わせによって変わるか…
0323デフォルトの名無しさん
2005/05/09(月) 06:13:54起動できないんじゃないか。
#漏れのノートにも入ってるが研究室でしか使えん。
スタンドアロン(認証サーバにつながない)ライセンスのがあるなら
インストールしてあるPCの数がそのライセンスの数までなら合法
それより多くのPCに入れるとたぶんアウトかな?
一度ライセンスをよく読んでみるのお勧め。
0324デフォルトの名無しさん
2005/05/09(月) 08:14:45サンクス
0325デフォルトの名無しさん
2005/05/09(月) 22:56:41どうもサンクス!
教授がどうもそういうのに疎くて…
一度よく読んでみるよ。
0326デフォルトの名無しさん
2005/05/10(火) 07:48:520327デフォルトの名無しさん
2005/05/10(火) 12:16:09ttp://www.cybernet.co.jp/matlab/support.shtml
0328デフォルトの名無しさん
2005/05/10(火) 14:03:26The MathWorks product documentation you have requested is no longer available.
なのだが、ヘルプはどこへ行ったのでしょうか?
0329デフォルトの名無しさん
2005/05/10(火) 17:59:50最近、研究室でMATLABを使っているのですが、エラーが出てきた時に音が出るのを
消したいのですが、どうしたらよいですか?コントロールパネルからではパソコンの本体から出る「プッ」
なんていう音が消せないのです。エラーが出るたびにほかの人の注目を浴びてしまいます。。。
よろしくお願いします。
0330デフォルトの名無しさん
2005/05/10(火) 19:24:43単位円をx軸に投影するプログラムを作るのですが。
ラジアンをtで設定し、x=cos(t),y=sin(t)をplot(x,y)で円をプロットするところまではできたのですが。
この後、radonというコマンドを使って投影をするそうなのですが、そっから先に進みません。
radon(???)の?の部分に何を入力したらいいのか分からないのです.
すいません、よろしくお願いします・・・。
0331デフォルトの名無しさん
2005/05/10(火) 19:53:02うぇwwwっおkwwwwwwうぇwwwっうぇっwwwwwwwwwwww
っうぇおkwwwwwwwwwwwwwww
うぇwww
っうぇwwwおkwww
■ このスレッドは過去ログ倉庫に格納されています