82 :
デフォルトの名無しさん :
2007/03/04(日) 23:08:10 こんばんわ 早速ですが質問させてください function のなかで function を定義するのはどうすれば良いのでしょうか。
hoge.m function hoge foo end function foo end
84 :
82 :2007/03/05(月) 09:18:41
>>83 成程、関数の終了時にendが必要なのですね。
早速のご回答、ありがとうございました。
なくても動いたと思うが。
リモートデスクトップ環境ではmatlabは実行できないのでしょうか????
87 :
デフォルトの名無しさん :2007/03/18(日) 06:57:16
おはようございます 早速ですが,1*pの行ベクトルxがあるときに, xを縦にn行並べたn*p行列はfor文を使わないで生成できますでしょうか. よろしくお願いします.
88 :
デフォルトの名無しさん :2007/03/19(月) 23:16:17
教えてください Optimization Toolboxのfminuncで 関数y=func(x,z)をxについて最小化したいんですが, どうすればよいでしょうか.zはこちらで与えたい定数です. ヘルプには X = fminunc(FUN,X0,OPTIONS,P1,P2,...) は、 問題に関連したパラメータ P1,P2,... を、直接、関数 FUN に渡します。 と書いてあったんで x=fminunc(@func,x0,[],z) というように,zを与えようとしたのですが,うまく行きません. ご教示いただきますと幸いです. よろしくお願いいたします.
91 :
デフォルトの名無しさん :2007/03/28(水) 17:20:31
複素成分の符号を逆(+なら-、-なら+)にする関数ってありますか?
92 :
91 :2007/03/28(水) 17:22:06
間違えました。複素数の虚数部でした。
conj
最近は共役って言葉を数学で教えなくなったんだな
円周率は大体3、という教育に期待するほうが無駄
わけも分からず3.14と教えられる方が問題あると思うよ 現代の小学生は正方形の中に 円をかいて4より小さいって自分で調べて3をみつけだしているからね
ご自分のときはどうだったのかな? 私のときは方眼紙に缶とかを利用して円を描き、 その面積を計算したりしたよ。
円を描いて32等分。 並べ替えて平行四辺形みたいな形状をつくり、縦x横。 更に班内で平均。
99 :
デフォルトの名無しさん :2007/04/10(火) 17:24:07
構造体を与えると固有のパスコードが返されるような関数ってありますか? 例えば a.b = 1; a.c = 'test'; なときに x = somefunc(a); で x = 'ZSGADRERASVFDSAD' みたいなのが返ってくるような。 入力する構造体の構造と値が一致した場合のみ戻り値xも一致して、 そうでない場合は全然違う値が出てくる、というようなものを探して います。何か良い方法を知っている方がいましたら教えてください。
100 :
デフォルトの名無しさん :2007/04/13(金) 18:33:46
MATLABやScilabで式長の制限はあるんでしょうか? Scilabでかなり長い式を定義しようとしたら, invalid factorと言われて困っております..
>>99 そのものずばりなものは見たことないよ。
fieldnames()とかを使ってフィールド名を出してきたり、struct2cellで値を出してきたりして、あとはMD5なんかに突っ込むしかないんじゃないかなー。
初心者のしつもんです simulinkで y(0)=0 y'=1-xy の微分方程式を作るにはどうやるのか教えてください やってみたけどわかりませんでした よろしくお願いします
すみませんスレ間違いました 出直してきます
104 :
デフォルトの名無しさん :2007/04/23(月) 18:07:27
ソースにIsim、placeってあるんですがどういう意味ですか?
105 :
デフォルトの名無しさん :2007/04/24(火) 09:19:10
あげ
isocolorsで3次元上の物体の表面に色をつけることができますが、同様に、alpha値を指定することはできないでしょうか?
107 :
デフォルトの名無しさん :2007/05/01(火) 16:54:04
一からMATLAB/simulinkを勉強しようと思っているのですが、 どういったところから始めるべきでしょうか? 解説書を見ながら、何かのデータをいじくっていけばいいのでしょうか?
108 :
デフォルトの名無しさん :2007/05/02(水) 18:10:44
clearで変数をクリアするとき、指定した変数以外をクリアする方法が知りたいです。 -regexpで正規表現を使うってのはわかるんですが a ab abcって変数があるとき clear -regexp [^\<ab\>] とするとabcだけがクリアされちゃいます。
109 :
108 :2007/05/02(水) 18:13:52
すいません変数abだけクリアしたいのです。
110 :
108 :2007/05/02(水) 18:15:05
またまたすいません。 変数ab以外です。
108ですけど誰か答えられる人いないんですか?
clear allですべて削除した後、必要なものだけ再作成。
正規表現の話だろ?もはや matlab も関係ないよ。正規表現を勉強しろ、とだけ。
>>108 まあそれだとabcにマッチするよな当然。
そしてbはclearされないけどxはクリアされると。
リモートデスクトップでmatlabは使えないのでしょうか?
割れものだと使えません。
初心者です。質問させてください。 imhistでプロットしたヒストグラムの数値を 計算に使うにはどうしたらいいんでしょうか? どこかに格納されてたりするんでしょうか。 お願いします。
ヘルプをみれば返り値として受け取れると書いてある
121 :
119 :2007/05/10(木) 10:14:03
ありがとうございます〜。
3Dボリュームの可視化で、表面の色を液体金属のようにしたいのですが、 どのようなパラメータを設定すればよいのでしょうか?
123 :
デフォルトの名無しさん :2007/05/29(火) 17:47:05
gzipで圧縮されているデータを解凍してから表示しているのですが、 解凍作業をmatlab上から行えないでしょうか?
!でコマンドラインよべなかったっけ?
matlabで3次元グラフを表示させてその表示した三次元グラフの表面積って計算可能ですか?
表面積の計算は自分でやってください。
関数外のグローバルな変数を関数内で用いるには、変数として代入するしかないのでしょうか? function Y = f(X,Za,Zb,・・・) if X=1 Y=sum(Za) elseif X=2 Y=sum(Zb) elseif... というように必要なグローバル変数Z*が非常に多いので、代入以外に方法があればと考えています。 Z*を一つの変数にまとめることも考えましたが、すでにZ*それぞれが3次元変数なので、出来れば避けたいです。
>>128 matlab global でぐぐるくらいしようよ。一発だよ。
x -y y x の逆行列を求めるにはどうやるの?
くだらない質問でごめんなさい。 色々調べてみてもイマイチ理解が出来ていないんですが・・・。 matlabでローパスフィルタを作製しようと思ったときに参考にできるサイト ってありますかね?
>>131 ローパスフィルタを作ること自体はfilter関数に何を入れてやればいいかだけ。
信号処理論の勉強をすべし。
hann関数を使用すると 未定義の関数、またはメソッド 'hann' (タイプ'double' の入力引数)。 と表示されます w = hann(1024); と使っているのですがうまく動きません だれかご教授を
Signal Processing Toolboxが入ってないんじゃない?
136 :
134 :2007/06/19(火) 21:31:13
多分それだと思います すぐに確認できないんで明日確認して報告します
137 :
134 :2007/06/20(水) 16:04:45
確認したらSignal Processing Toolboxがありませんでしたので 練習ついでにhanning関数作りました。 ありがとうございました。
hannning関数をつくるなんてすごいなぁ
その辺の関数ならOctaveのがそのまま使えるんじゃないの?
2次元データを平滑化する関数はありませんか?
141 :
デフォルトの名無しさん :2007/06/29(金) 14:48:56
forループで時間を進めて plotで表示しているのですが、最後のplotしか表示されません。 途中経過も表示したいのですがどのようにしたらよいのか教えてください
figure hold on for i=1:n plot(なんとか) end hold off こんな感じ? forの前にhold onしてforのあとにhold offかな?
あー、もしかしてこっちかな? figure for i=1:n plot(なんとか) drawnow end drawnowですぐ結果表示だからね。 質問をはっきりして欲しい。
>>141 ソースも書かずになんで原因が分かると思ったんだ?
>>142 ,143 はひまでしょうがないから
たまたまあてずっぽうで答えてくれただけだからな。
145 :
デフォルトの名無しさん :2007/07/01(日) 08:38:58
>>143 でうまくいきました。
どうもありがとう。
146 :
デフォルトの名無しさん :2007/07/01(日) 12:06:46
Linux版で動画を作成したいのですが、movie2aviは非圧縮しか対応していません。 圧縮フォーマットは何でもよいのですが、何かよい方法はないでしょうか?
>>146 mplayer とか ffmpeg とかいろいろあるじゃん。
148 :
デフォルトの名無しさん :2007/07/03(火) 13:23:05
教授から、作成したmファイルがコンパイルできないで困っていると相談を受けました ソースを解読しながら修正することになったのですが、如何がコンパイルできない、どの関数が実行できないなどの情報はどこかに集まっていないのでしょうか?
教授のくせに頭悪いな
せめてどんなエラーが出るか書くとかしてね。
ふーむ m ファイルをコンパイルか・・・
152 :
デフォルトの名無しさん :2007/07/03(火) 22:25:59
「移動平均」ならぬ「移動最大値」(or「移動最小値」) を計算できるような方法はございますでしょうか? (自分でforとmax使って作ると遅いので・・・)
153 :
148 :2007/07/04(水) 11:49:11
>>149 どうもすいません。確かに前提のお話が足りていませんね。
>>150 言いたいことは分かりますが、ただ教授も神様じゃないんです。
一応教授から聞いた症状ですが
・使用したコンパイラはmcc
・環境はmatlab6.5でコンパイルできた
・matlab7.1にしたらコンパイルできなくなっていた(これは共同研究者の環境ら
しいです
と、ここまでは聞いた話です。忘れてください。
それで、自分で試した限りでは
・matlab6.5ではコンパイルできず
・matlab7.0ではexeファイルを生成できるけど、実行できない
となっていました。
プログラムは用意したmp3(またはwav)ファイルを読み込んで、その波形から特徴
のあるところを探すものらしいですが、400行ちょっとあって、どこが原因なのか
探すのが一苦労です。
今後もmファイルのコンパイルにはお世話になる可能性が高いので、何が障害にな
るか傾向なんかがあるとやりやすいのですが…
たったの400行で何言ってんだ……
おまえソースコードもってんだろ?エラーメッセージぐらいなんでかかんの?
なんで教授が2chできくわけ? 教授なら外国の掲示板で聞くと思うが
いつ教授が2chできいたんだ? それに教授だからとなぜ2chで聞くのがおかしいんだ? 教授は崇高な存在だとでも思っているのか?
スカートの中を手鏡で覗く教授に似てるなと思っただけ
Final Fantasy Tactics
以前のhelpだと inv は、LINPACK のサブルーチン ZGEDI と ZGEFA を使っています。 とありますが、 最近のは invは、LAPACKルーチンを使って、逆行列を計算します。 行列 関数 実数 DLANGE, DGETRF, DGECON, DGETRI 複素数 ZLANGE, ZGETRF, ZGECON, ZGETRI となっています。具体的には、何が違うのでしょうか?
161 :
デフォルトの名無しさん :2007/07/08(日) 15:13:50
対称スペクトルをifftしても虚部の時間信号で出てくるのはなぜでしょうか?
162 :
デフォルトの名無しさん :2007/07/19(木) 05:08:44
Matlabのアカデミックパックの価格って誰かご存じないでしょうか?
>>162 基本システムは,去年購入した価格で10万円強だったが,価格改定されてるかも.
サイバネットシステムのサイトからメールで資料請求しなされ.
すぐにカタログと価格表を送ってくれるよ.
うむ。基本パックが11万円くらい。各ツールボックスが4万5000円くらい。
MATLABにLISPのmap関数の様なものはありますでしょうか?
>>165 なんでそんなものが必要だと思うのかを書かないの?
>>166 for文を使わずに,
'A.*B'や'A./B'の様に書きたいからです.
「何を」for文を使わずに'A.*B'や'A./B'の様にの様に書きたいのかを書いたら? それは本当にlispのmap関数のようなものがないとできないのか?
>>168 おまえはまず興味があるのなら、Yes か No で答えてあげたらどうだ?
疑問文に疑問文で答えろと学校で教えているのか?ってやつだ
さいきんなぜだか知らんがこういうやつ多いよ
質問するなら何がやりたくて何が分からないのか全部最初に書く。
小出しにして質問者に質問させるような質問に親切に答えてくれる人は少ない。
>>169 はそういう親切な人みたいだから、君が答えてあげたら?
>>171 あんたが質問の意味も理解できない馬鹿なだけだろ
mapでやるようなことをmatlabでは違う方法でやるのが普通。
>>172 はちゃかしてるだけで結局答えることも
どう聞くべきかを教えてやることもしないんだろ?
普通じゃない方法はやるなと主張するわけだな?
>>174 そんなこと一言も言ってないのになんで勝手に決めるんだ?
でお前は質問に答えられもしないし
どう聞けばより答が得られやすいかを教えてあげるわけでもないんだろ?
176 :
初心者 :2007/07/23(月) 21:36:26
MATLABのツールボックスを使わずに、 TSPの10都市問題をエネルギー関数を用いて解かせるプログラムを組みたいのですが、 全くわかりません。。 参考にできるサイトなどありましたらお教えいただけませんでしょうか。
pythonならmapなかった?
178 :
177 :2007/07/23(月) 21:44:44
ちなみに python matlab compatible で検索すると幸せになれるかも
>>176 検索したら巡回セールスマン問題の解法アルゴリズムは
たくさん出てくると思うんだけど。
それをプログラムにしていく過程でまた具体的な質問が出てきたら
ここで質問したらいいと思うが、その質問だと全部ゼロから書いてくれ
って言ってるようなもんだぞ。
コツとしてはMATLABは忘れてpseudo codeでいいから求める手順を
まずしっかり書き出してみることだな。
>>177 ,178
matlabとmapで検索しまくって出てきた答?
>>176 traveling salesman annealingで検索したらそのまんまなのが見つかるな。
さすがに宿題でこのコード出すわけにはいかないだろうけど(笑)。
181 :
初心者 :2007/07/25(水) 22:41:54
デフォルトの名無しさん、丁寧なご回答ありがとうございます。 参考にさせていただきます。
182 :
デフォルトの名無しさん :2007/08/03(金) 18:20:14
3つの列ベクトルx(i),y(j),z(k)をそれぞれx軸、y軸、z軸に設定してグラフを書きたいです。数式によって高さを与えるz平面のプロットは可能ですが実験で得られたデータを高さに与えて平面を書き出すことは可能ですか?
高さがあるのに平面とは…
mov2aviでPowerPointで再生できる動画を作成したいのですが、何を指定すればよいのでしょうか?
>>184 help mov2avi
何が出来て何が出来なかったのか言ってくれないと判らない
186 :
デフォルトの名無しさん :2007/08/10(金) 21:15:59
画像に、フィルターをかけるとき、フィルタのパラメータを調整したものを複数生成して それらを一覧で表示したいのですが、 cat関数で横一列に繋げると、枚数が増えたとき表示のバランスが取れません。 何枚生成するかは、そのときそのときで違う場合で、よい方法はないでしょうか?
187 :
デフォルトの名無しさん :2007/08/10(金) 22:16:01
3次元のグラフというか立体図面を書きたい。 x,yの平面に高さzで、高さを面で現したような。 n行3列の行列があって(例えばdat)、行毎に[x,y,z]のデータの組が順不同に入っている。 例えば dat = [ 1 2 0.5; 1 3 0.6; 3 8 1.5; 1 1.5 0.6]; plot3(dat(:,1),dat(:,2),dat(:,3),'.') では上手く行かないし、surfaceを使えば良いのか、検討が付かない。 何か手掛かりだけでも、誰か教えてください。
>>186 で、そのフィルターが1個のときと1000個のときで
具体的にどう表示して欲しいんだ?
>>187 よく分からんけどsurfは? とりあえずhelp graph3dしろ。
189 :
186 :2007/08/11(土) 18:33:27
>>188 えっと、ある程度表示がよくなればまったく問題ないのですが
画像の右上に、パラメーターの数値を書き込んで
それらの画像をおおよそウィンドウ内部に
おおよそ正方形くらいになるように並べられらばと思っています。
1個のときの表示、2個のときの表示、・・・と全部具体的にイメージできてる? それが出きてればそれをプログラムに書けばいいだけ。文章から推測するに、 君はやろうとしていることを具体的に細分化して理解しようとしていない。 「おおまかにこんな感じ」ではプログラムにならない。 コンピュータはそんなにかしこくないんです。
191 :
デフォルトの名無しさん :2007/08/24(金) 10:49:42
すごい初歩的なことなのですが少数点以下をもつ数の累乗根を出すような関数やコマンドは何でしょうか?
ヘルプは当然見たんだろうけど、どうやって調べた?
>>192 helpでコマンド一覧みたいなのを見たのですが整数の累乗根を出すものしか見つけられなかったので質問させてもらいました
>>193 うちでは整数のみのそのコマンドが見つからないです。
195 :
デフォルトの名無しさん :2007/09/12(水) 18:12:42
等間隔で行を抽出するにはどうすればいいですか? 例えば、1行目、11行目、21行目…という風にです。
1:10:end これじゃダメ?
株価のローソク足に似てるなーと思って「MATLAB ローソク足」でググったら一番上にそれらしきものがでてきたよ Financial Time Series Toolboxがいるらしい そこでCandle Plotを描くだけならだれかが自作のmファイルを後悔してるかも知れないと思って 「MATLAB Candle Plot」でググったらCandle.mを無性公開しているサイトを発見したぜ
>>195 fid = fopen(filename);
while 1
line = fgetl(fid);
if length(line)==0
break;
end
// 任意の操作をここに。
for ii = 1:10 // 10行を読み飛ばす。
fgetl(fid);
end
end
fclose(fid);
でOK?
200 :
197 :2007/09/13(木) 19:57:27
>>198 多謝。それです。
「ローソク足」というものがあるのですね。知りませんでした。
見つけていただいたコードを参考にしたいと思います。
以下、チラ裏。
plot( [x1 x2 x2 x1 x1], [uh uh lh lh uh] ));
で、箱が描けるとは。
matlab暦5ヶ月目で、新鮮な発見。
検索スキルとmatlab力を磨いて出直してきます。
201 :
195 :2007/09/15(土) 16:14:20
202 :
デフォルトの名無しさん :2007/09/23(日) 16:27:08
MATLABには行列内部の最小の値を取る関数はあるけど 最小の値のある場所のインデックスを返す関数ってないよね
同じ関数
help その関数 で、わかりますよ^^
205 :
デフォルトの名無しさん :2007/09/25(火) 11:19:11
ygridの位置を指定するにはどうすればいいのでしょうか?
もっと詳しく書いて欲しいところだが、 set(gca, 'YTick', [ ... ]); とかでどう?
matlabのグラフで,プロットした波形にマウスを当てると, その時点での縦軸と横軸の値が出ますが, それを,コマンドプロンプトでやりたいんですが, 関数かなにかありますか? 検索しても見つからなかったので, やはり自分でプログラムを組むべきなのでしょうか?
209 :
207 :2007/09/27(木) 23:44:56
>>208 ご教授ありがとうございます.
gnuplotは,さわりだけしか使ったことないんで,
どうなるか分かりませんが,やってみます.
210 :
207 :2007/09/27(木) 23:47:12
ということは, そういったことができるmatlabコマンドはないんですね・・・
211 :
デフォルトの名無しさん :2007/09/28(金) 14:52:23
画像処理でアフィン変換できる関数が見当たらないのですが気のせい? 結構基礎的な関数の気がするんだけど
そのくらい自分でやれ、ってことじゃないの?
まとめサイトはありませんか?
214 :
デフォルトの名無しさん :2007/09/30(日) 15:08:48
v=1*50000 vector & A=50000*50000 matrix v*AをやろうとするとOut of memoryになっていまいます。 メモリーを追加しないで、効率よく計算するにはどうしたらいいですか? よいBuilt-in関数とかないっすか?
216 :
デフォルトの名無しさん :2007/09/30(日) 22:31:40
>203,204,215 helpみました 吊ってきます…
Axes上に複数のLineオブジェクトを作成しました。 このLineをマウス操作で移動したり、リサイズしたりしたいと思ってます…。 Axes上にLineを引くときは、function axes1_ButtonDownFcn( )でいけました。 しかし、function axes1_ButtonDownFcn( )の中にselectmoverisizeを書くと、 Axes自体が移動・リサイズされてしまいました。 そもそも、Lineオブジェクトをselectmoveresizeで操作するのは無理なんでしょうか?
3次元プロットで、(例えばsurfなどで)値がaxisで指定した範囲外にあってもプロットされてしまうのですが、 axisで指定した範囲内のみプロットするようにするにはどうしたらよいのでしょうか?
関数を定義する場合必ず別ファイルにしないといけないのですか? 同一ファイル内で定義することはできないものでしょうか?
matlabってリーもとデスクトップじゃつかえないのだね
222 :
デフォルトの名無しさん :2007/10/11(木) 14:00:14
pythonで大部分の数値計算できるけどmatlabってやっぱりまだ需要あるの?
>>223 C で python のできることは全部できるけど python って需要あんの?
俺紙とエンピツで全部やってるけどコンピュータって需要(ry
さすがにMATLABのスレでそりゃないだろ。 手作業でやったら一生かかっても終わらん計算してるだろうに。
227 :
デフォルトの名無しさん :2007/10/23(火) 14:25:52
質問なのですが、下記のプログラムをsimulinkでブロック図にて表すにはどうすればよろしいでしょうか? clear allsyms z n p T syms z n p T h=0.1; A=[exp(-h) int(exp(-T),0,h);-0.5 1]; b=[0;0.5]; c=[exp(-p) int(exp(-T),0,p)]; G=c/(z*eye(2)-A)*b; R=z/(z-1); Y=R*G; y=iztrans(Y); t=1; for m=0:9, v(1,m+1)=subs(y,n,m); for l=0:9, w(1,l+t)=subs(v(1,m+1),p,l*1e-2); end t=t+10; end figure plot(w) grid on
それは質問じゃなく変換依頼
タブ区切りのデータなのですが、一行目が見出しになっています。 一行目をのぞいて簡単に読み込む方法はないでしょうか?
fgetl
たぶん激しく初心者な質問でスマソなんですが、サイズがL,M,Nな3次元変数を3次元プロットする方法知りませんか?
強度イメージから一定範囲の強度値だけを抽出する 方法を教えてください
233 :
デフォルトの名無しさん :2007/10/25(木) 22:39:50
田中真紀子のポロリ画像ありますか?
234 :
デフォルトの名無しさん :2007/10/26(金) 09:37:43
オナニーをすると身長が伸びないというのは本当ですか?
235 :
231 :2007/10/28(日) 16:40:35
236 :
デフォルトの名無しさん :2007/11/01(木) 13:39:31
質問させてください。 specgramの逆の操作がしたいです。 X=specgram(x,128,8000); で、 スペクトログラムXから音xを合成したいのですが、どうしたらいいですか??
synthesizeとかいう命令があったような気がする。 matlabじゃなくてoctaveの命令だったかも。
238 :
デフォルトの名無しさん :2007/11/02(金) 06:26:24
Core2duoに変えたんだけど、64BITに変えたら 計算すごく速くなる? ベンチとかないかなぁ
239 :
デフォルトの名無しさん :2007/11/02(金) 19:57:08
入力したサウンドデータを,何の音なのか (例えば,パトカーのサイレン,人の叫び声等) 分類するソフトを個人的に作成しています. とりあえずmatlabでスペクトル表示を行い, 様々なサウンドデータのスペクトルを見たのですが, 分類の条件を何にしようか考えています. 「パトカーのサイレンは○○Hzで特に高いピーク値を得られる」 などの特徴を分類する際の条件にできるかなと思ったのですが, この他に,音を分類する上で有効な条件となるようなものを ご存知の方がいましたらご教授お願いします.
スレ違い
自分の目でいういろ比較して確かめなさい
242 :
デフォルトの名無しさん :2007/11/04(日) 12:40:22
はじめまして、matlab初心者です。 早速ですが質問させて下さい。 任意形状の2次元物体をメッシュ切りした上に、 コンターグラフの様な物を描かせたいのですが、 どなたか出来る方法をご存じないでしょうか? 宜しくお願いします。
243 :
デフォルトの名無しさん :2007/11/04(日) 19:30:34
matlabのメインウインドに打ち込むだけでsimulinkの開始ボタンを押したのと同じ処理になるコマンドってありますか?
244 :
デフォルトの名無しさん :2007/11/05(月) 20:40:09
245 :
デフォルトの名無しさん :2007/11/07(水) 10:02:25
例えば4x4のマトリックスを2x2にして、各要素は元々のヨウ素を加算してくれる関数はないですか? ループとsum関数を使えばすぐに出来るんですがね
246 :
デフォルトの名無しさん :2007/11/07(水) 10:05:37
>>211 Image Processing Tool Boxだったかにあるよ。座標変換してからinterp2に流し込めばすぐにできるけどね。
>>247 matlab ではできるだけループを使わないのが重要
速度がダンチ
書き方が曖昧でわからんがエスパーの俺ならこうかな。Aのサイズは偶数として。 B=A(1:2:end,1:2,end)+A(2:2:end,1:2:end)+A(1:2:end,2:2:end)+A(2:2:end,2:2:end);
:と,一カ所ミスった。
251 :
デフォルトの名無しさん :2007/11/09(金) 15:59:58
??? エラー: ==> anfisedit SCRIPT anfisを関数として実行してみてください. これを解決するにはどうすればよい のでしょうか? 一週間前ぐらいにMATLAB始めた者です。
>>251 SCRIPT anfisを関数として実行してみてください.
MATLABで式をニュートンラプソン法でとくにはどうしたらいいでしょうか? 分からなさすぎてノイローゼになりそうです。
まぁスレ違いだわな
255 :
デフォルトの名無しさん :2007/11/12(月) 07:39:22
GUI上でxの変域をかえたいんですけどどうすれば良いですか?
GUI上で数値を入力させて、 set(h, 'xlim', [x1 x2]); じゃダメなの?
257 :
デフォルトの名無しさん :2007/11/16(金) 21:18:38
FORTRANで書いたものを、 MATLABに変換したいのですが、手書き以外で 何かいい方法あったら教えてください。
258 :
デフォルトの名無しさん :2007/11/16(金) 22:16:21
fftでパルスの周波数帯域を表示させたいんですが、 周波数軸をどうやって設定すればよいかわからないのです。 パルスはガウシアンパルスでUWBなので5ギガ位まで表示させるつもり何ですが、うまくいかないのです。 どなたかお願いします。
>>257 グーグルの使い方くらい知らないと
今後いろいろ苦労すると思うから覚えた方がいいよ。
ファイルの読み込みで指定した列だけ読む方法ってありましたっけ。 A = load("hoge.txt"); B = A(:,4); みたいに、全部読んで目的列以外は捨てればいいんですが、 ファイルのサイズが大きいと、 全部読むのに時間がかかるので、効率化したいのです。
261 :
18 :2007/11/17(土) 23:13:55
matlabでシミュレーションを5回もするとメモリが500Mから1Gくらいまで増えてしまうんですが、 これってなぜなんでしょうか?
>>260 dlmreadのマニュアル読むと良いよ。
対数データのフィッティングの方法を教えてください。 通常のデータであれば、最小二乗法ですが、対数データの場合はどのようにやればよいのでしょうか?
対数の底で冪をとって最小二乗法
265 :
beta-infinite :2007/11/20(火) 13:16:10
266 :
デフォルトの名無しさん :2007/11/25(日) 19:51:53
著作権違反ですよw
267 :
デフォルトの名無しさん :2007/11/26(月) 18:14:01
MATLABを使ってBP法のニューラルネットワーク作らないといけないんですが 誰か請負いませんか? 価格は応相談、MATLAB使えてBP法分かる人ならそんなに難しい作業じゃないと思います 仕様とかその辺は請け負ってくれる人がいたらメールなりなんなりで連絡します
268 :
デフォルトの名無しさん :2007/11/26(月) 18:32:59
今、手一杯だからなー。 月80万だったら考えるけどね。 それかNNツールキット買えばいいんじゃないの?
ていうか自分で作れって感じ 層やニューロン数を完全に一般化した物でなければ速攻で作れるでしょ もちろんfor文抜きでな
270 :
267 :2007/11/26(月) 19:12:50
料金は 3時間未満:一律12000円 3時間以上:時給4000円 7時間以上:一律28000円 このあたりでよろ おれ自身じゃ作れないので金で解決する
安すぎ
委託研究でMATLABでソフト作ったときは、30万もらったな
作成物の複雑さとか教えてもらえずに 7時間以上28000円は安いな。
274 :
267 :2007/11/27(火) 00:00:36
ここでは話せないが詳しい仕様を聞いてくれるやつはレスくれ 秘密厳守の上その時点で断ってくれてもOKだから
こんなところで依頼しようとしている時点でダーティなイメージがついてて嫌だ 全然予算がないようだし学生の卒論か?
276 :
267 :2007/11/27(火) 01:14:15
277 :
デフォルトの名無しさん :2007/11/27(火) 01:19:35
別に matlab じゃないとできないわけじゃない。プログラミング言語に依存してたまるか
279 :
請負人 :2007/11/27(火) 11:53:45
請負内容を見て判断したいです。詳細内容などをメールをください
280 :
請負人 :2007/11/27(火) 11:59:51
>>267 >>270 請負内容を見て判断したいです。詳細内容などをメールをください。
秘密厳守を守ります。
手元にはバックプロパゲーション法の自作ソースくらいあるんだが バカ学生に使いこなせるとは思えん
matlab にファイル名を変えるコマンドってありましたっけ? 同時にファイル内の関数名もあわせて変えてくれるとベスト
284 :
デフォルトの名無しさん :2007/11/29(木) 23:34:51
matlabで書いたグラフで、線と線に囲まれた部分の
面積を求めることは可能でしょうか。
ファイルをアップしましたので、よろしかったら見てみてください。
http://www.csync.net/service/file/index.html (ファイル名はmatlabです)
画像の灰色の部分の面積を求めたいのですが、
積分のやり方もわからないのです(:_:)
あとMファイル(txtになってしまってます)のコピーが二つありますが、
mensekiの方は画像の元になるグラフが書けます。
danmenの方は、元のプログラムですが、
xの値を0〜0.5まで変えると赤と緑の線が一周するように
できているのですが、この二つの線と、黄色の線が作る面積を求めたいんです。
どんな方法でもいいのでどなたか教えてくださいm(__)m
285 :
beta-infinite :2007/11/30(金) 00:29:49
286 :
デフォルトの名無しさん :2007/11/30(金) 03:26:05
教えてください。 MAT LABで書いたFigureのX軸Y軸をX→Y、Y→Xと逆にしたいのですが どうすればいいんでしょうか?お願いします。
287 :
283 :2007/11/30(金) 10:53:34
>>285 ありがとうございます。
今までhold onとか使っていたんですが、こんなシンプルにいけたんですね。
ですが、シミュレーションしたものをアニメーションとして表示したいので
この方法だとどうしても描画が遅くてシミュレーションの結果通りに描画できません。
そこで
>>283 の方法は高速だということなので、
>>283 のイレースモードxorを使う方法でのやり方を知りたいのです。
>>283 の方法以外でも高速に描画できる方法をご存知の方はお願いします。
具体的にしたいことは、
・2つボールの0.001秒毎の位置が2つの配列に入っている。
・それをある時間dt秒毎に描画したい。
・1回の描画毎にpause(0.001*dt);などして時間に正確にアニメーション化したい。
自分のやり方や
>>285 さんのやり方だと
dtを大きくすればするほどアニメーションがゆっくりになってしまいます
288 :
283 :2007/11/30(金) 10:56:39
>>287 の修正
× pause(0.001*dt);
○ pause(dt);
289 :
MATLABの極 :2007/11/30(金) 12:02:44
>>288 PAUSE(n) は、n秒間停止して、その後実行を続けます
当然ですが、pause(dt)のdtを大きくすれば、
アニメーションがゆっくりになってしまいます
290 :
MATLABの極 :2007/11/30(金) 13:29:41
291 :
283 :2007/11/30(金) 13:44:06
>>289 ですが、dtを大きくするとその分荒いサンプリングをすることになるので
描画時間がdt秒に比べて十分小さければ同じようなアニメになるはずですよね
コマ送りになるかどうかの違いはあれど。
でもやはり描画時間はそこまで小さくするのは無理なのでしょうか。
MATLABではこんなことはできないのでしょうか
292 :
MATLABの極 :2007/11/30(金) 14:04:16
293 :
デフォルトの名無しさん :2007/11/30(金) 15:21:36
beta-infinite.blogspot.comってパクリしかないじゃんかw
294 :
MATLABの極 :2007/11/30(金) 15:45:10
>>293 MATLABの修業中です。覚え書きのブログだと思っていただければ、
295 :
283 :2007/11/30(金) 16:30:08
>>292 やっぱgetframe,movie,movieしかないですかね
ありがとうございました
296 :
デフォルトの名無しさん :2007/11/30(金) 17:13:21
著作権違反だので、通報しました
FFTを使って、スペクトルを計算するのって、どうすればいいの?
だので
>>297 help fftとコマンドを打って出てきた説明を理解できなければ
回線を切って死ぬか教授に頭を下げて教えを請いなさい
>>297 beta-infinite.blogspot.comだけは見ないように。
fftはtwo-sideの出力を出すので、help fftだけでは話は完結しない
302 :
デフォルトの名無しさん :2007/12/01(土) 16:02:42
教えてください。 プログラムで図を描かせたときにX,Y,Zラベルの刻みのラベルを 変更したいのですが、関数などプログラムで書かせることができるでしょうか? 少し伝わりにくい文章ですが、よろしくお願いします。
なんか楽に関数名リネームする方法ねーのかよ
>>303 関数名リネームって
>>282 が言ってるようなことか?
もしそうならファイル名と違ったらファイル名の方が優先なだけだから
コード中の関数名は適当でOK。
しかしそういう時は普通呼ぶ側のコードも変えないといけないから
どっちにしろ一括置換とかする程度の手間をはぶくのは無理なわけで
コードの頭の関数名変えるくらいの手間は取るに足らないと思うが。
306 :
デフォルトの名無しさん :2007/12/02(日) 18:39:33
関数の入力にベルトルの集合としての行列をいれるとき皆は NxD 派? DxN 派?where N is the number of vectors and D is the dimension of each vector. どっちのほうが親切なんだろう?toolbox によって(人によって)違うんだよねぇ。
シミュレート板で回答を得られなかったので。 simulinkである変数がある値になったときシミュレーションを終了したいのですが どうすればできますか?
ムービーを作成する際に、figureウインドウを出さずに作成することはできないでしょうか? figureウインドウを作成してgetframeで取り込む場合、スクリーンキャプチャをしているようで、 他の作業をすると、その画像がムービーの中に入ってしまいます。 そのためムービー作成中は何も作業ができません。
310 :
デフォルトの名無しさん :2007/12/05(水) 16:25:53
DICOMファイルから画像読み込み、JPG形式で書き込みしようとしてるのですが、 X=dicomread('--.dcm'); [Y,map] = gray2ind(X); imwrite(Y,map,'--.jpg','jpg'); とすると、colormapを使用したimshowの表示画像と異なってしまいます。 よろしくお願いします。
311 :
デフォルトの名無しさん :2007/12/05(水) 18:06:21
正の実数からなる対角行列の、各行と列について、 要素の大きさが対角成分の要素の大きさの0.5から2倍の範囲なら1で置換、 それ以外なら0で置換する、 ってforループを使わずにできるでしょうか?
質問ばっかで誰も答えてくれない罠wwwwwwwww
>>311 対角行列なら対角成分以外すでに全部0やん
これぞまさに質問スレ
vistaは2007aで正式サポートですが、2006aで動かした場合、どこかに既知の問題のようなリストはないでしょうか?
>>307 僕はMatlabで音系のことをやってるけど、
wavwriteとかのデフォルトが行=サンプル/列=チャンネルなので、
ベクトルの集合はいつも縦長ベクトルを横にいくつか並べるというかんじ。
DxNってことになるのかな?
u1=[ [ { arctan( ( 1-k ) * cot( u1*v*w ) -b*tan(u1*v*w) ) } /( 2*a) ] + ( q*π ) ] / [ { arctan( (1-k) * cot(v*w) -b*tan(v*w) ) } / (2*a) ] u2=[ [ { arctan( ( 1-k ) * cot( u2*v*w ) -b*tan(u2*v*w) ) } /( 2*a) ] + ( r*π ) ] / [ { arctan( (1-k) * cot(v*w) -b*tan(v*w) ) } / (2*a) ] a=sqrt(k)*(y/x-x/y) b=k*(y/x)^2-(x/y)^2 matlab流の書き方じゃなくてすみません。 上記の連立非線型方程式からxとwを数値解として求めるプログラムをつくりたいのですが・・・ x,w 以外の値はすべて既知で、 u1,u2 は 1<u1<u2<=3 である任意の実数 q,rは 0または1 それ以外は任意の正の実数 分母は必ず正の値(になるはず) 最適解を求める際に、分子のarctan(・・・)の項が負の値になってしまう時にはqまたはrを「1」にしてπを加える それ以外の場合にはq,rは「0」 と、こんな感じなのですが,どなたかサクっと作ってくださいませんでしょうか・・・
秀丸用の強調定義ファイルはありませんか?
matlab ってファイル読み込み関連の関数が貧弱で困った。 一行にいくつ数があるかわからないときにどうやって読み込んだらいいんだ? ちなみにこんなファイルフォーマット 1 1:8392 2:8384.23 4:9832.82 2 2:8329 3:8389.34 5:9328.82 3 4:9838 先頭の 1,2,3 は最終的には捨てる行数 1:8392 は要素[1]に8392という値ということ。そして最初の行は 3 を飛ばして 4 に行っている。 そして最後の行は、他の行と読みこむ数が違う。
320 :
デフォルトの名無しさん :2007/12/12(水) 10:36:23
fgetlで1行まるまる読んで、strtokで切り出していくしか無いんじゃないの?Cでも普通そうだろ?
>>319 それを一発で君の思い通りに読んでくれる
ファイル読み込み関連の関数が貧弱じゃないやつって何?
煽ってるんじゃなくて単に興味があるから知りたい。
ExcelとかRとかできるんかな?
excelじゃ無理だね。
figureウインドウを表示させずにムービーを作る方法を教えてください
324 :
デフォルトの名無しさん :2007/12/13(木) 13:25:52
>>319 と似た質問なんですが
フリーフォーマットで他のソフトで出力されたデータを取り込みたいのですが
textreadがうまくいかず…
1
1.00000E+00 2.00000E+00 3.00000E+00 4.00000E+00 -0.40763E-13 -0.22240E-04
2
5.00000E+00 6.00000E+00 7.00000E+00 8.00000E+00 -0.84319E-13 -0.22422E-04
と並んでるデータがありまして、このデータの6つ並んだうちの
後ろ二つを取り込んで行ベクトルにしたいんです。
で、textreadを用いて
[head1,data1,data2,data3,data4,data5,data6,] = textread('ファイル名.txt', '%u %f %f %f %f %f %f')
とやってみたものの、うまくいきません。
どうやら1の後ろに何かがあるとmatlabが認識し(ホントは改行だけのはず)
data1〜6 (%fの指定部分)に0をいれとります。
そして次の行に移行し、そこではきちんとデータを拾えてます。
周波数を表す 1 と 次の行の 1.00000E+00 を取り込むとき
%u %fだとフォーマットの指定に不足があるのでしょうか??
>>324 textread は一行ずつ読み込むんだろ?
最初の行は先頭以降何もないから0をが入っていくと。
[data1,data2,data3,data4,data5,data6,] = textread('ファイル名.txt', '%f %f %f %f %f %f')
として、奇数行と、偶数行に後でわけるとかになるんじゃね?
326 :
デフォルトの名無しさん :2007/12/13(木) 15:38:43
どうやらそのようだ、と思っていたんですが 以前同様のものを読み込んだ際に行ごとでなかったんですよね たとえばこんなデータ 1 1 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.58726901E-12 0.55467926E-06 を読み込むとき、 [head1,head2,data1,data2,data3,space1,space1,data4,data5,data6] = textread('testATV.txt','%u %u %f %f %f %c %c %f %f %f'); で、data5,data6に 0.58726901E-12 0.55467926E-06 を格納できたんです。 これって、五つ目の%f(浮動小数点)のあとに%c(スペース)を読み込んでるので 行をまたいでも効果があることになると思うんです。
327 :
デフォルトの名無しさん :2007/12/13(木) 15:39:32
1 1 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.58726901E-12 0.55467926E-06
328 :
デフォルトの名無しさん :2007/12/13(木) 15:41:18
あああすいません、変な書き込みしてしまいました 1 1 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.58726901E-12 0.55467926E-06
329 :
デフォルトの名無しさん :2007/12/13(木) 15:42:56
どうやらうまく書き込めないのですが 1番目、2番目の1の下にはスペースが存在していて 3番目の0.00000000E+00 と下の行の0.00000000E+00 は 列がそろっています。
330 :
ks :2007/12/16(日) 14:41:45
======== 教えてください。 ======== 1次遅れ+無駄時間要素を含む制御対象の限界感度法による PIDパラメータをmatlab上で、どう求めるんですかね〜 ======== 教えてください。 ========
331 :
デフォルトの名無しさん :2007/12/21(金) 01:33:00
>>329 textreadにこだわらなくてもいいんじゃないの?
332 :
デフォルトの名無しさん :2007/12/27(木) 03:52:31
matlabでfor文をまわす時 ループが終わるごとに変数をclearした方がよかったりします? 不振な挙動。。
そんなことないと思うが。 それにしても、Matlabバージョンとか書かないと。
たぶんそれはいくつかの変数を間違って使ってるかロジック間違えてるだけだ。 ちゃんと全部読み直せ。
335 :
デフォルトの名無しさん :2008/01/07(月) 02:46:00
波形処理をやっていてカーブフィッティングをしています。 fit関数を使ってフィッティングをしているのですが、 フィッティング後の曲線のパラメータが読み取れません。 fit1 = 一般モデル Exp1: fit1(x) = a*exp(b*x) 係数(95% 信頼区間付き): a = -10 (-10.17, -9.831) b = -0.01371 (-0.01403, -0.01338) こんな感じでフィッティングしたあと、bの値を使いたいのですが、 どうすれば読み取れますか? 初心者の質問ですみません。
336 :
デフォルトの名無しさん :2008/01/08(火) 00:30:09
2値化した画像をカラー画像にするにはどうしたらいいですか
それはもう情報がかなりないからとても難しいあるね
338 :
336 :2008/01/10(木) 14:39:29
>>337 カラーは白黒でよいのですがそれでも無理ですか?
>>338 それは、フォーマット変換したいと言うこと?
それとも、2値のメッシュをグレイにしたいと言うこと?
340 :
デフォルトの名無しさん :2008/01/10(木) 22:09:11
2次元座標から、各座標の点をラインで連結してプロットさせ それを画像として処理したいのですが、現在は plot(point(:,1),point(:,2));または line(point(:,1),point(:,2)); pointは100*2行列、xy座標の点100個としています。 これだとプロット結果を保存しても画像のサイズが変更されてしまいます。 点と点を直線で結んでいく関数などありましたら教えていただけないでしょうか?
行列の積で初歩の初歩的な質問だと思うのですが誰か教えてください! 10000x10の行列Aがあるとします。 A*A'だとout of memoryと出力されるのですが A'*Aだとちゃんと計算結果が出力されます。 考えてもイマイチ理由が浮かんで来なかったのでどなたか教えてください〜! 単純な質問で失礼しました。
前者は 10000x10000 後者は 10x10 の出力になるだろう?明らかすぐる
これはひどい
344 :
デフォルトの名無しさん :2008/01/11(金) 09:11:51
(・A・)*(・A・)'
ホントだwww頭悪くてすまそww ありです。
346 :
デフォルトの名無しさん :2008/01/12(土) 16:46:00
plotで描ける線の種類を増やせないでしょうか? 6種類のデータを1枚の図に、白黒で書く、ということで困っています。
>>346 解決しないかも知れないけどマーカと併用するのはダメなんですか
線種で区別できる程に線が絡み合ってないのならそれでいけるのではないでしょうか
>>348 MATLABでなくていいなら、画像ビューワでも画像エディタでもいくらでもやりようがありそうだが。
何を、何故、MATLABでやりたいのか全然判らんのだよ。
>>349 MATLABで画像処理の勉強をしろといわれ、つい2値化の画像を白黒だけの
カラー画像に変えてやろうと思った。
まずおめーは、白黒だけのカラー画像とかわけわかんねーことをいうな カラー画像っつったらRGBとか3チャネルあるやつを普通は指すんだよ。
あほす R == G == B のことだろ それより2値化の画像って何だ? 2値の画像だろ
ステップ応答の試験をしてMATLABで伝達関数を出したいんですけど、 最小二乗でフィットさせるときの方法とかいうのが分からないので教えてください。
354 :
デフォルトの名無しさん :2008/01/17(木) 12:20:28
テキストファイルの行数を事前に知る関数はないでしょうか?
355 :
デフォルトの名無しさん :2008/01/17(木) 17:09:55
>336 エスパー回答すると、im2bw関数とかで2値化してしまった画像は、0が黒、1が白になります。 そしてどちらかの値しか取れない。 これをグレースケールの画像に変換したい場合は、0〜255の値を扱えるように拡張して、その後に掛け算をしてあげると良いです。 具体的には BW; % 2値化された画像 I = uint8(BW)*255; % グレースケール化された画像 な、感じです。 実際は、Image Processing Toolbox内のim2uint8とかいう関数が同じ事をしているよ。 RGB化したい場合はさらに [w,h] = size(I); CI = zeros(w,h,3); % カラーイメージを入れるための準備 CI(:,:,1) = I; % 赤に代入 CI(:,:,2) = I; % 青に代入 CI(:,:,3) = I; % 緑に代入 …でいいはず(うろ覚え
>>357 よくある1次遅れ、2次遅れ、むだ時間とかいうパラメータを使った低次元伝達関数です
たとえば
G(s) = Kωn^2 / (s^2 + 2ζωns + ωn^2) * e^(-τs)
のパラメータを出したいんです
あ、あと私のMATLABにはSystem Identification Toolboxが入っていないのでこれを使わない方法を教えて欲しいです。
360 :
デフォルトの名無しさん :2008/01/18(金) 08:58:30
指数関数的に減衰していくデータにフィットさせたいのですが、このように非線形の場合どのようにやればよいのでしょうか? 対数プロットでは直線になるので、何か最小自乗法のような物は使えないでしょうか?
362 :
デフォルトの名無しさん :2008/01/18(金) 17:47:29
fminsearch関数使えば?Simplex方による繰り返し計算だけど。
数学的には間違いだけれども、
対数変換して直線フィットすると、ある値が出る。
それを初期値に
>>362 にしたがって、解を探す。
>>360 ごめんなさい
その最小二乗でだけっていうところが分からないでの聞きにきたんですよね・・・
365 :
デフォルトの名無しさん :2008/01/19(土) 12:47:42
polyfit使えば一発。ただ原点に返って正規方程式を逆行列で解くのもありだな。
366 :
デフォルトの名無しさん :2008/01/19(土) 14:03:31
>>364 MATLAB以前の問題なのか…
>>365 polyfitって、フィットさせる式に制限があるからね。
367 :
デフォルトの名無しさん :2008/01/19(土) 21:23:54
>>365 ployfitって単なる多項式しか出来ないんですよね
>>366 MATLAB以前の問題かもしれないんですけど、
やるとしたらデジタルで出てきたデータをz変換してそれを行列使って最小二乗してやるということになるのでしょうか?
368 :
デフォルトの名無しさん :2008/01/20(日) 15:18:25
だから単純なたとえばy = a*x^2 + …とか
>>360 に書いてあることはわかるんだが、
伝達関数の場合のプロセスが分からないっていうことなのだが教えてもらえないのか?
なにを調べたらいいか分からないからここに来たんだが
369 :
デフォルトの名無しさん :2008/01/20(日) 18:50:24
>>368 あなたはどういうデータを持っていますか?
理論的には、どういう操作をしますか
どういう式にあわせて、係数を推定したいですか?
わかった具体的に質問しよう
まず
>>357 のような伝達関数で出力されたデータを
>>360 のような行列表記するとどうなるのか
そもそもこのやり方以外に方法があるのならどういったものがあるのか
ということをよければ教えてくれ
371 :
デフォルトの名無しさん :2008/01/20(日) 20:11:17
実空間で解いたらいいんじゃないの? 2次の遅れ系なら解は2つの指数関数の和だろ? それに入力パルス(今の場合e^(-τs) なのかな?)との叩き込み積分が掛かっているだけ。 それをコスト関数にしてfminsearchにかければいい。 行列表記ができるのはpolyfit関数なんかが使える線形な式のみじゃないの?
372 :
デフォルトの名無しさん :2008/01/21(月) 13:58:02
実空間でfminsearch使ったら出来そうだけど、ζの大きさによって式が変わるから、 せっかくz空間で来まった式で表現できるG(z)がもったいないなぁと思ったんですが、そんなものですか? あと、e^(-τ*s)っていうのはむだ時間を考えたときのです。いるかいらないかは実験データを見てから決めようと思うんですけど。 今functionの使い方を勉強してる段階ですが、fminsearchでやってみます。
370==372 なのか? なにか教えてもらえると思うとすぐに下手に出るのか。
374 :
372 :2008/01/21(月) 23:24:44
というよりイライラしていたら言葉が悪くなるんだよ
375 :
デフォルトの名無しさん :2008/01/22(火) 21:13:48
問題をあなたが理解していないのでは、と思わざるを得ない。 なぜなら、あなたが何をしたいのかが、伝わらないからである。 伝達関数の求め方はいろいろあるんだよ。
376 :
デフォルトの名無しさん :2008/01/22(火) 23:54:33
何をしたいか:伝達関数を出したい
教えて欲しいこと:伝達関数の求め方
求め方として最小二乗かなと思って
>>353 と書き込んだんだがどこが伝わらなかったんでしょうか?
377 :
デフォルトの名無しさん :2008/01/23(水) 09:50:12
>>376 それで伝わっていると思うのなら、
あんたの理解が甘い。
先生に教えてもらえ。
378 :
デフォルトの名無しさん :2008/01/23(水) 13:29:48
linux(openSuSE 10.3)でmatlabを使おうとするとjavaのAssertionに引っかかって 死にます。java1.5だとそうなるらしいのですが、-nojvmというオプションを渡すと GUIなしで起動するという話もみました。でも_JAVA_OPTIONという環境変数に-nojvmを 渡しても、Matlabが起動しません。(matlabのactivationはまだできてない)。どなたか同様の問題を乗り越えた方はいませんか?
polarでMarkerSizeを変更する方法を教えてください
ふつうのグラフで軸をスケーリングするには AXIS([XMIN XMAX YMIN YMAX]) とすればできますが、 subplotを使ったグラフの軸をスケーリングするには どうしたらいのでしょうか?
>>381 同じでできるんですか?
AXIS([XMIN XMAX YMIN YMAX])としてもできなかったので
聞きにきたんですが。もう一度試してみます。
もしこれでできない場合、他に方法はないでしょうか?
383 :
デフォルトの名無しさん :2008/01/23(水) 23:35:12
>>382 subplot(211)
plot(x,y)
axis([xmin xmax ymin ymax])
%
subplor(212)
plot(x,y)
axis([xmin xmax ymin ymax])
>>382 subplot(2,1,1);
plot(x, y);
set(gca, 'xlim', [xmin xmax]);
set(gca, 'ylim', [ymin ymax]);
でもいけるのでは?
>>381 >>383-384 できました。ありがとうございました!
自分が馬鹿でした。
axis設定してからplotしてました。
plotしてからaxisなんですね。
386 :
デフォルトの名無しさん :2008/01/27(日) 13:14:09
>>384 set(gca, 'xlim', [xmin xmax], 'ylim', [ymin ymax]);
で桶では?
387 :
デフォルトの名無しさん :2008/01/27(日) 18:20:12
逆ラドン変換iradon()を使うとデフォルトでRampフィルタがかかってしまうのですが フィルタ無しの方法はありませんか? 海外のMATLABのヘルプでは値でNo filteringにできるそうなんですがバージョンが 古いのかバージョン7.2では出来ません。
388 :
デフォルトの名無しさん :2008/01/27(日) 20:46:38
逆投影なんかツールボックスを使わなくても数行でかけるのに(´・ω・`)
389 :
387 :2008/01/28(月) 04:32:33
なんとかヒントでもよければ教えてもらえないでしょうか? 専門外のことなのでどうにもこうにもツールに頼ってしまってorz
edit その関数 で、中身見てフィルタ部分カットしたのを書くのはどうですか?
391 :
デフォルトの名無しさん :2008/01/28(月) 12:49:16
まあ、簡単に考えると配列の方をirotateで回転させ、そこに加算していけば2行で書けるんだけどね。 それで角度でループさせるの。 iradonの中を触るんだったら、Hというのがフィルター関数なので、この部分を取り去るか、1にしてしまうか。 勉強のために1から作りたいんだったら、C言語で出ている教科書を買って、ネチネチと移植してもいい。 おれは院の先輩の薦めで「SPECT画像再構成の基礎」(医療科学社)という本の中に出ているフーリエ変換法のプログラムを移植したよ。
グラフの大きさを変えるにはどうすればいいのでしょうか? いつもマウスでウィンドウのサイズを変えて 縦横比を見やすく調整しているんですか コマンドでできないでしょうか?
position
set(2,'position',[30 246 1120 420] って感じですね? できました! ありがとうございます
figure(1); print -deps 〜.eps のようにグラフをepsファイルに出力してるんですが その出力したepsファイルのサイズ(縦横比)を変えることはできないでしょうか? set 'position'でできるかと思ったらできませんでした。
396 :
デフォルトの名無しさん :2008/01/29(火) 16:20:06
自由落下した物体が床で跳ね返る時、速度の符号が 変わりますよね。その時ゼロクロッシングとかいう エラーでちゃいます。ゼロクロッシングの検知を 無効にするとうまくシミュレーションできません。 何でですか?
483 名前:名無しさん@5周年[] 投稿日:2008/01/29(火) 16:04:56 ID: 自由落下した物体が床で跳ね返る時、速度の符号が 変わりますよね。その時ゼロクロッシングとかいう エラーでちゃいます。ゼロクロッシングの検知を 無効にするとうまくシミュレーションできません。 何でですか?
398 :
デフォルトの名無しさん :2008/01/30(水) 16:50:48
set(gcf,'PaperPositionMode','auto')かな?
399 :
395 :2008/01/30(水) 20:04:51
>>398 printに-zbufferとか-openglオプションってのを
つけてみてもできなくて困っていたのですが
ずばりそれでできました!ありがとうございます
400 :
デフォルトの名無しさん :2008/02/05(火) 13:58:03
MEXをVisualC++2008ExpressEditionで 開発するときの設定の仕方ってどこか にありませんでしょうか?m(_ _)m
401 :
デフォルトの名無しさん :2008/02/05(火) 17:04:41
x=[0:1000]に対応するf(x)が手元にあって 各xについてx-x/10<=x <= x+x/10の範囲でfの移動平均をとって平滑化をしたいんですが ループを使わない方法はないでしょうか?
100*100*100のxyz空間を用意して,各点に対して同じ100*100*100のAという行列の値を カラーマップに対応する色で描画するにはどのようにすればいいのでしょうか? X = 1:100; Y = 1:100; Z = 1:100; [XX,YY,ZZ] = meshgrid(X,Y,Z); によってxyz空間とそれぞれの点に値を持つ100*100*100のA行列は用意できている状態です。 例えばカラーマップの範囲が0(青)〜10(赤)でありA(50,50,50)=10の場合 出力されるfigureの(50,50,50)の部分を赤に色付けしたいです
403 :
デフォルトの名無しさん :2008/02/08(金) 03:53:49
Control System Toolboxを使われている方に質問です。 ゼロ次ホールドの連続時間伝達関数である、 H = (1-exp(-sT))/s ; T:サンプリング周期[sec] という表現をmatlab上で再現するにはどのようにしたらよいのでしょうか? s = tf('s'); を使って直接表現しようと試みたのですが、上手くいきませんでした。 連続時間システムの制御器の設計及びコンピュータへの実装の際に 使用したいと考えています。 よろしくお願いします。
404 :
デフォルトの名無しさん :2008/02/08(金) 12:02:16
構造体にセットしたデータをfwriteとかでバイナリファイルに書き込むのはどうしたら良いのでしょうか?
405 :
デフォルトの名無しさん :2008/02/12(火) 21:18:32
素人質問ですが教えていただければ幸いです。 10個の自動計測されたデータが列方向に並んでいるcsvファイルを csvreadで一気に読み込んだ後に(例えばAとする)、 10個の列要素に小分け(A1〜A10)しようと考えています。 各要素の1行目は説明なので2行目から最終行までを選択して取り込むには どうすればよいのでしょうか? 思いつきでA1=A(:,2:inf)とかしようとしたらエラーがでてしまいました。 多分while文とかでNaNがでるまで読み込み続けるとかすると思ったのですが 力尽きてしまいました。 やさしい人。お願い。
406 :
デフォルトの名無しさん :2008/02/12(火) 21:48:36
infじゃなくってendじゃないの?
>>405 よく読まずに書いてしまうが、infではなくendを使ってみたらどう
>>2 請けた仕事について、2chで無料で意見伺う無神経さw というか綱渡りで仕事してるからけつに火がついてしまうのに懲りてないな。 ベンチャー高専隊
A(:,1)=[] で1列消せるはず
410 :
405 :2008/02/13(水) 00:47:05
407さん、ありがとうございます!おっしゃる通りで解決しました。 さらに色々触ってみて疑問が沸いたので厚かましく質問させてください。 (長文ですみません、誰も呼んでくれないだろうなぁ・・・) 例えば、 ----------------- time data1 data2 1 10 100 2 11 99 3 10 102 4 9 98 | | | ----------------- というデータをcsvファイルから読み込んで、 data1とdata2を1/1000倍してから csvファイルとかExcelファイルに上と同じ書式でE書き込もうとして 下記のコードを書いてみました。 結果、xlswriteではうまく動くのですが、csvwriteではエラーが出ました。 セル配列を使えなかったようです。 私が自宅で使っているMATLABはバージョンが古く(ver.6.5)、xlswriteが使えません。 できれば古いバージョンでも動くファイル処理関数で対応できないものかと思っています。
411 :
405 :2008/02/13(水) 00:48:21
(続き)書いてみて失敗したコードです。ご指導お願いします!! ------------ clear all Alldata = csvread('csvsample.csv', 1, 0); Time = Alldata(2:end, 1); Data1 = Alldata(2:end, 2); Data2 = Alldata(2:end, 3); Data1 = Data1/1000; Data2 = Data2/1000; Dataset = [Time Data1 Data2]; Dataset_cell = num2cell(Dataset) Label = {'Time', 'Data1', 'Data2'}; Outdata = {Label ; Dataset_cell}; %xlswrite('newxls', Outdata) csvwrite('newcsv.csv',Outdata)
みなさんMATLABのfigureをWordとかPowerPointにはるのにどうしてますか? 今まではBMPで保存してXnViewの自動トリミングで余白を削ってはってました。 ただ、BMPだとWordでグラフを拡大縮小したりするとフォントがかすれたりして見た目がかなり汚くなります ベクターフォーマットのemfファイルで保存するのが一番きれいなのですが、グラフの余白を簡単に削る方法が見つからないです XnViewでもemfファイルを読み込めるんですが、XnViewで自動トリミングしてemfファイルに保存すると、 ファイルサイズが10倍以上になって、しかもビットマップデータみたいに拡大縮小すると汚くなります グラフの余白を簡単に削れてきれいに貼り付けられるうまい方法とかないですか?
413 :
405 :2008/02/13(水) 02:19:36
自己解決しました。スレ汚しすみませんでした。 泥臭く下記のように書いてみました。 データ整理するのにxlsreadとかxlswriteって便利だなぁと思いました。 --------- clear all Alldata = csvread('csvsample.csv', 1, 0); Time = Alldata(2:end, 1); Data1 = Alldata(2:end, 2); Data2 = Alldata(2:end, 3); Data1 = Data1/1000; Data2 = Data2/1000; Fid=fopen('newcsv3.csv', 'wt'); Label = {'Time', 'Data1', 'Data2'}; for i=1:length(Label) fprintf(Fid, '%s,', Label{i}); end fprintf(Fid,'\n'); Dataset = [Time, Data1, Data2]; [Rownum, Colnum] = size(Dataset); for i=1:Rownum for j=1:Colnum fprintf(Fid, '%d,', Dataset(i,j)); end fprintf(Fid, '\n'); end fclose(Fid);
414 :
デフォルトの名無しさん :2008/02/13(水) 07:14:12
すいません、皆さんみたいにハッカーになるためにはどんなことが必要ですか?
415 :
デフォルトの名無しさん :2008/02/15(金) 12:54:18
>>412 グラフの大きさを指定して、拡大縮小せずに使えるようにする
416 :
デフォルトの名無しさん :2008/02/15(金) 15:21:13
MATLABでドロネー分割をつかって、3角形のパッチを利用した形状モデルを作っているのですが、パッチにテクスチャを貼り付けるにはどうすればいいでしょうか?
3次元の立体形状から有限要素法用のメッシュを作り出す方法を教えてください
418 :
デフォルトの名無しさん :2008/02/15(金) 17:19:00
テクスチャマッピングの仕方を教えて欲しいです。 わかりやすいサイトとかがあればお願いします。 よろしくお願いします。
419 :
デフォルトの名無しさん :2008/02/15(金) 18:09:31
要求が高いなぁw まず、www.google.co.jp。日本語以外のサイトも調べよう。
420 :
デフォルトの名無しさん :2008/02/18(月) 22:58:56
2次元のグレースケールの画像を、Z軸がピクセル値で3次元表示させたいんですけど、どうすればよろしいですかね?
すいません, a = 'Hello World' を b[1] = 'Hello' b[2] = 'World' に分割するコマンドはありませんでしょうか.
doc regexp
424 :
デフォルトの名無しさん :2008/02/20(水) 16:55:39
>>422 [ str,rem ] = strtok( a,' ' );
これで、最初のスペースまでの単語がstrに入り、残りがremに入る。
remの中をさらに切り分けたければこれを繰り返す。
str系の関数はC言語とほぼ同じだな。
425 :
デフォルトの名無しさん :2008/02/21(木) 23:23:05
WAVファイルをパワースペクトル表示する方法を教えてください お願いします
426 :
デフォルトの名無しさん :2008/02/22(金) 01:14:46
ぐぐれ
ググっても見つからなかったんで質問させてください。 h1 = plot(x1) hold on h2 = plot(x2) h3 = plot(x3) ... といくつかのプロットを重ねた後、一つだけ(例えばx2のプロット)だけ消したい、または変更したいという場合、どうしたらいいですか? 全部プロットしなおせばいいんですが、ちょっと重い上に何度もやるプロットなんで、全部やり直すというのは避けたいんです。
428 :
427 :2008/02/23(土) 23:15:57
書き忘れてました。プロットツールは使わず、関数で出来る方法で探しています。
430 :
427 :2008/02/24(日) 22:00:13
431 :
デフォルトの名無しさん :2008/02/25(月) 11:05:16
グラフの凡例中で改行するにはどうすればよいでしょうか? plot(X1) hold on plot(X2) plot(X3) legend({'X1';'test'},'X2','X3') とタイトルや座標軸中の改行と同じように入力しても無理でした。
432 :
デフォルトの名無しさん :2008/02/25(月) 13:33:55
100枚の画像あってサイズが縦240横352なんですが 横の左50画素、右46画素をカットして横幅を256画素に、 30×30の位置の色と同じものを上に縦16×横240くっつけて 256×256の画像にしたいのですが、どうすればいいでしょうか?
つ[ImageMagick] なんでもかんでもMATLABでやりたいならしらね。 つーか、MATLABエキスパートに任せた。
434 :
422 :2008/02/25(月) 19:24:02
>>423 >>424 ありがとうございました!
6.5なので423での'split'は無理みたいでした.
435 :
デフォルトの名無しさん :2008/02/25(月) 20:47:37
質問です! ある画像の一部分(オブジェクト)の画素値の平均をとりたいのですが、 ラベル付けして、オブジェクトの全ピクセルの座標は取ったのですが、 for i=r(min):r(max) for j=c(min):c(max) heikin=mean2(Img(i,j,:)); だと、オブジェクトの形が四角ではないのでオブジェクトの外側の画素値まで 計算してしまいます。 何かいい方法がありましたら教えてください。
436 :
デフォルトの名無しさん :2008/02/25(月) 21:04:19
>>435 オブジェクトがなんなのかわかりませんが、その内側と外側で違う特徴的なものをfindで引っかけてやればいいのでは?
たとえばオブジェクトの外側が-100より必ず小さいのであれば
m = find( Img( : ) < -100 );
heikin = mean( Img( m ));
の2行でできるはず。
Imgの範囲を絞りたいのだったら、
i = r(min):r(max);
j = c(min):c(max);
m = find( Img( i : j ) < -100 );
heikin = mean( Img( m ));
forループは極力使うのは止めましょう。
437 :
435 :2008/02/25(月) 22:08:15
ご回答ありがとうございます。 バッチリ上手く行きました。 差しでがましいですが もう一つ質問が… 二値化の画像にラベル付けをしてあるのですが、 ある座標を与えて、その座標を含むオブジェクトのラベル番号、 もしくはそのオブジェクトを構成している全座標を入手したいです。 [r,c] = find(bwselect(Img2,i,j)); これが僕の絞り出した答えでしたが無理でした。。 いいアイディアがありましたら教えてください。
438 :
435 :2008/02/25(月) 22:08:54
ご回答ありがとうございます。 バッチリ上手く行きました。 差しでがましいですが もう一つ質問が… 二値化の画像にラベル付けをしてあるのですが、 ある座標を与えて、その座標を含むオブジェクトのラベル番号、 もしくはそのオブジェクトを構成している全座標を入手したいです。 [r,c] = find(bwselect(Img2,i,j)); これが僕の絞り出した答えでしたが無理でした。。 いいアイディアがありましたら教えてください。
439 :
デフォルトの名無しさん :2008/02/26(火) 21:13:42
フルカラーを使ってのムービーを作成する際のコーデックは何がおすすめですか?
無圧縮AVI 後で別のソフトで変換
442 :
デフォルトの名無しさん :2008/02/28(木) 22:32:06
質問させてください! 統計的に(最小2乗法などを用いて)2次近似モデルを式として作成する関数を探しています。 例えば実験にて2つの入力を調整し、1つの出力が得られるものがあるとします。 そのときの計測条件を[x,y](2入力、ともにベクトル)、計測値を[z](1出力、ベクトル)としたときの 計測値Zに対するX,Yの2次近似モデルを作成したいのです。 アウトプットイメージとしては Z=係数*X^2+係数*Y^2+係数*X*Y+係数*X+係数*Y+係数 のような感じです。 プロの皆さん、どうか教えてください〜
443 :
デフォルトの名無しさん :2008/02/29(金) 03:55:17
>>442 z=[ z1,z2,......,zn ] '、x=[ x1,x2,......,xn ] ' , y = [ y1,y2,......,yn ] ' とし
z = A*x^2 + B*y^2 + C*x*y + D * x + E*y + F
とすれば
a = [ x.^2 y.^2 x.*y x y ones( length( x ),1) ];
x = [ A B C D E F] ' ;
とおいて
x = a\z;
で解けるはず。未知数が6つなので、データ数が少なくとも6つ以上ないと無理だけどね。
重み係数を使う必要がある場合は、ノルムを最小にするようにしないといけないけどね。
444 :
デフォルトの名無しさん :2008/02/29(金) 03:56:57
>>437 find関数の中は条件文じゃないと機能しないのでは?
445 :
デフォルトの名無しさん :2008/02/29(金) 21:13:31
>>443 ありがとうございますー、やってみます!
446 :
デフォルトの名無しさん :2008/03/02(日) 12:22:49
>重み係数を使う必要がある場合は、ノルムを最小にするようにしないといけないけどね。 この意味が理解できないw
448 :
デフォルトの名無しさん :2008/03/03(月) 18:43:02
重み付き最初二乗法はどうやって記述できるの?
なぜmatlabスレで数式をきくんだ? matlab への翻訳がわからないのなら数式は記述しておくとか、 数式が記述してあるページとかを示しておくべきなんじゃないのか? 数式がわからないというのはスレ違いだろ?
450 :
デフォルトの名無しさん :2008/03/03(月) 21:32:41
シミュ板の scilab のスレッドが過疎で レスがいただけないようなので、こちらで質問させてください。 MATLAB で ( x^2 ) + ( x * y ) + ( y^2 ) = 1; 主軸が斜めになっている楕円は どのように plot2d すればいいのでしょうか?
452 :
デフォルトの名無しさん :2008/03/03(月) 23:41:30
>>447 いや、そもそも変なこと書いてるのではないか?
453 :
デフォルトの名無しさん :2008/03/04(火) 00:26:46
あるwaveファイルにQ値、ゲインをある特定の周波数に持たせたい (EQをかけたい)のですが、どうすればよいのでしょうか? フィルタを使う(fdatool)ではダメですよね? 宜しくお願いします
456 :
デフォルトの名無しさん :2008/03/12(水) 16:33:14
質問させていただきます。 「MATLABによる制御系設計」という本で勉強しているんですが、 MATLABの制御系コマンドを使えるフリーソフトを探しています。 検索すると無料でScilab,Octave,Freemat,有料でMATXというのがあるようですが、 制御系コマンドを使う時、互換性が最も高いなどお勧めの ものがあれば教えてください。
有料だけどMATLABっていうのがあるらしいよ
458 :
デフォルトの名無しさん :2008/03/14(金) 11:53:20
>>457 456
もちろんMATLABは知ってますが・・・・
研究でMATLABは使ってきたのですが、これからは
家でも勉強したいのであのような質問をしたのですが。
拙い質問と感じられたのでしたら申し訳。
Scilabでいいんじゃね
Octaveでいいんじゃね
Freematでいいんじゃね
とりあえず見つけたやつ全部自分で試して見ればいいんじゃね
463 :
デフォルトの名無しさん :2008/03/15(土) 00:59:47
学生ならMATLAB買え
464 :
デフォルトの名無しさん :2008/03/15(土) 20:20:24
>462 ごもっともだと思います。 知り合いにもそういう意見をもらったんで、 そうしてみます。とりあえず、Scilabインストールしてみました。 金銭的に厳しいのでフリーのソフトから自分なりに試して みようと思います。 >463 それもそうですね。 MATLABをインストールできるだけお金が貯まったそうしようと思います。 4月から社会人なので。 意見ありがとうございます。
前の職場でmatlab使ってたけど今のところでmatlab買えない pyrhon.numpy と maxima どっちがお勧め?
俺的には; python + scipy + matplotlib
グリッドの幅を変更したいのですがどうやって指定すればいいのでしょう? grid minor より細かくしたいでっす。
468 :
デフォルトの名無しさん :2008/04/08(火) 06:19:29
Unix用Matlabで圧縮ムービーを作る方法はありませんか? movie2aviだと非圧縮しかサポートしていないようなのですが。
469 :
デフォルトの名無しさん :2008/04/09(水) 21:59:10
行列の平方根を求める方法を探したら、関数「sqrtm」が使えることが分かった。 例えば、 Y = X * X; でYが与えられたとき、解Xを求めるには、 X = sqrtm(Y); とすればいい。 ところで、次の場合、解Xを求めるにはどうすればいいんだろう? 分かる人いる? Y = X * X' ※ 行列はすべて複素行列で、「'」は複素共役転置を表す
470 :
デフォルトの名無しさん :2008/04/11(金) 16:07:05
教授から言われて、MATLABで作ったプログラムをコンパイルしています。 コンパイルは普通に通るのですが、エラーが発生する箇所が時々出ます。 エラーが出た箇所や解決法をリスト化して書いてあるサイトなどは無いのでしょうか? 今回は解決したのですが、毎度これを解決するのは難儀なので。 今回はsystem関数で ----------------------------------------- "プログラムのフルパス" -コマンドラインオプション ----------------------------------------- としてあったのを ----------------------------------------- cd "プログラムのあるフォルダ" プログラム名 -コマンドラインオプション ----------------------------------------- としたら動きました。
>>470 どうでもいいが、ディレクトリをほいほい移動しちまっていいのか?
その後ファイルアクセスしてたら厄介だぞ。
UNIXのoctaveスレの人たちをここに誘導した方がいいのだろうか
473 :
デフォルトの名無しさん :2008/04/12(土) 21:48:45
お互いに行き来すればいいんじゃない? 全員誘導に従うとは思えないけど
474 :
470 :2008/04/14(月) 12:09:08
>>471 ご指摘どうもです。
今回の場合は、外部のプログラムを1回呼び出すだけだったので問題はなかったです。
コンパイル時に動かないのは、プログラムのパスをダブルクォテーション(")で囲っているのにその後にコマンドライン引数あげている事なので…
あと、どうも他にMATLAB関連スレが見当たらないので一人事を書いておきます
・eval関数を使うとコンパイル後実行時にエラーが出る
mファイルをコンパイル時に外部mファイルが必要と判断された場合は、必要な外部mファイルは暗号化されてctfファイルにまとめられるが
eval文中で外部mファイルを
eval('foo(1);');
と呼び出すとコンパイル時に解析されないのでctfファイルに同梱されない
おそらくfevalやinline等の関数も同じ症状が出る
邪魔だったら文句言って下さい…
475 :
470 :2008/04/15(火) 16:02:17
独り言その2 evalやfeval、inline等の関数を使うと、コンパイル後、プログラムをを実行中にエラーが出ることがある これはMATLABに同梱されている関数でもその対象となるものがある。 その関数の中でfevalなどが使われていると、やはり同梱されない関数が出てくるため実行エラーがある Signal Processing Toolboxのaryule 関数でそういう症状があった。
476 :
470 :2008/04/15(火) 17:18:30
間違いがありました aryule関数ではなく、pyulear 関数でした。 独り言その3 このようにeval関数関係でエラーが起こる場合、一番有効な方法は ctfファイルに必要な関数を同梱させるために一度も使わない関数を書いて function foo() 関数1(); 関数2(); 関数3(); とコンパイルするmファイルに追記しておくと良いと思います。
477 :
デフォルトの名無しさん :2008/04/16(水) 19:47:18
ムービーをQuickTime形式で保存する方法を教えてください
質問です MATLABにおいてベクトルの要素が複素数の場合に最大値を求めると、 最大値はなぜそれが最大値だとみなされるのでしょうか?
480 :
デフォルトの名無しさん :2008/04/18(金) 17:45:16
長さじゃないの?
もうちょっと詳しくお願いできませんか? 3+iと4-3iの場合、どのように大小を決めるかということです
482 :
デフォルトの名無しさん :2008/04/18(金) 19:19:09
ベクトルの長さだから、sqrt( 3^2 + 1^2 ) と srqt( 4^2 + (-3)^2 )じゃないの?
ああなるほど、そういうことですか 親切にありがとうございました
matlabを使う前に中学数学を勉強しよう
485 :
デフォルトの名無しさん :2008/04/18(金) 22:43:32
MATLABはコンパイラがあって、それを使うとC/C++で組んだコードと同じくらいの 速さになる、と聞いたのですが本当ですか?
486 :
デフォルトの名無しさん :2008/04/18(金) 22:58:21
本当だよ。100万近くするけどね。研究室のを使っている。
487 :
デフォルトの名無しさん :2008/04/18(金) 23:06:07
>>486 ありがとうございます。友人からそのことを聞いて、いまC++を勉強してるのが無駄な感じがしてきてたのですが、
やっぱり、MATLABがそれなりにできてコンパイラもある状態なら、あたらしくC++を勉強する必要はない、という
くらいですか?実行速度で、C++で作ったコードには勝てますか?
C++で行列使うのいやなんですよね。。。それでも速度でC++の方が速いなら、やる価値はあるのかと思ってたけど、
そうじゃないならC++とはバイバイしたいス。
C/C++からmatlabを使って高速に動かす、という手もある。 こちらは100円も掛からない。
489 :
デフォルトの名無しさん :2008/04/20(日) 11:28:41
>>488 MATLABの関数を外部ライブラリみたいにつかうということですか?
490 :
デフォルトの名無しさん :2008/04/20(日) 21:43:48
uicontrol('style','text','string','TEST') など、GUIで文字を入力した図をeps形式で保存しました。 これをillustratorで開くと、入力した文字が図形オブジェクトとして認識されてしまいます。 illustrator内で、文字オブジェクトとして認識させる方法はないのでしょうか?
491 :
デフォルトの名無しさん :2008/04/21(月) 19:15:01
movie2aviを実行すると エラー: ==> avifile.addframe>ValidateFrame Frame must be 440 by 439. というエラーが出ます。ウインドウのサイズが問題なのだと思うのですが、 movie2aviコマンドに適切なウインドウサイズをプログラムで指定できませんか?
492 :
デフォルトの名無しさん :2008/04/22(火) 18:29:05
2つの変数を数十万通り、方程式に代入して解を求めたいのですが、Matlabのプログラムで可能でしょうか? 可能でしたら、具体的にどのようにすれば求めればいいでしょうか? (Mathematica、Maple、C言語など、他のソフトも使える環境にあります。Matlabより向いているソフトがあれば教えてください。 ちなみにソフトは苦手で、どれもにわかです。)
493 :
デフォルトの名無しさん :2008/04/22(火) 18:38:15
数十万だろうが一つだろうが本質的にはかわらんよ。方程式は非線形なの線形なの?
494 :
デフォルトの名無しさん :2008/04/22(火) 19:00:07
非線形です。 方程式は、今ある状態ではニュートン・ラプソン法等で近似を行う必要があり、計算が膨大になりそうなので ある程度n、簡略化を行おうと努力してるところです。 一応、線形にできる可能性もないこともないと思います。 知りたいのは、何十万通りの2つの変数を外部データから読み込んで計算するのにMatlabは適しているのか、ということです。
質問です rootsを使って多項式の解を求めるとき、 f(z) = z^-2 +9 のように逆数になってる場合どうすればいいのでしょうか? また複素数面上に極座標表示するにはどれを使えばいいでしょうか?
496 :
デフォルトの名無しさん :2008/04/23(水) 15:09:13
>>494 本当に何十万通りやらなければいけないのか、考えてみることが必要かと。
プログラム自体は何パターンでも計算可能
二つの変数を取る、その問題に最適化されたプログラムを自分の手で書いたほうがいいと思うんだが
498 :
デフォルトの名無しさん :2008/04/23(水) 22:31:07
499 :
デフォルトの名無しさん :2008/04/23(水) 23:15:42
xcorrに限らず、配列がマトリックスの場合、それぞれの縦ベクトルで別々に計算するというルールがあるの。sumとかmeanとか。 だから、これを一本の縦ベクトルにしてからぶち込んだらいい。 あとは自分で調べてね。 ここ基本だからね。
>>498 ん?なんで cross correlation がひとつの値になるんだ?
語弊を恐れず書くと cross correlation は convolution みたいなもんなんだから、|N1| + |N2| -1 の長さになるだろう?
あと、2次元データなら2次元拡張 xcorr2 がある。
matlab買えないのでRにした octaveっていま一つ
502 :
デフォルトの名無しさん :2008/04/25(金) 07:11:58
503 :
デフォルトの名無しさん :2008/04/25(金) 08:58:45
とういうか単に相関corrを使いたいだけなんじゃないの?
PC変更したらアクチベーションは2台までらしく アクチベーションできなくなって PC移行時は問い合わせろと書いてあったので 米・日両方問い合わせるも反応ナッシングな俺はどうしたらいいですか。 Studentの2007年版デス。
積分が行われる様子を可視化することは可能でしょうか? 球の表面積を面積要素で表したいのですが。
506 :
デフォルトの名無しさん :2008/04/28(月) 20:05:28
>>504 土日だからじゃないの?
もう返事きたでしょ?
>>506 来ました
Machine IDの変更申請をしろとな
508 :
デフォルトの名無しさん :2008/04/29(火) 19:03:34
ウインドウを表示せずにアニメーションを作成する方法を教えてください。
509 :
デフォルトの名無しさん :2008/05/01(木) 07:23:38
MATLABで A=atan(imag(B)./(real(B)); と位相応答を求めた後、群遅延を求めるにはどうしたらよいでしょうか? 上式を周波数で微分したらよいと思うのですが・・・ やり方がわかりません・・・
すみません。スレ違いだったらスマソ 友達がPCに詳しい自分にmatlabを使えるPCはどれがいいかと聞いてきたんですが、自分はこのソフトについて一切知らないのが現状です。 みなさんがmatlabを快適に使う環境とはどのようなものなのでしょうか? よろしくお願いします
>>510 matlabを快適に使うとなればメモリは8GBくらい欲しいし、となれば64bitLinuxをWoodcrestXeonで動かせばいいかな。
matlabだけならCPUはDualCore一個でいいんじゃない? ディスクはできればRAIDを組むとして、HPのProliant辺りでどうでしょ。
512 :
510 :2008/05/01(木) 18:20:43
>>511 さん
メモリ4GBに64bitは自分のメインマシンですがそれでも足りないんですねw
すみません。言い方を間違えたようです。
とりあえずコスト10万ぐらいのレベルで考えたときどのような構成にすればよいでしょうか?
>>511 さんのレスからするとメモリは多めでCPUはdual coreぐらいでも問題ないと。
ぜんぜん理解していなくて申し訳ないのですがmatlabは大容量のデータをいじることにポイントを絞り、それに伴うCPUがあればいい感じですか?
どうぞよろしくお願いします
そりゃあんた、>510の友達がmatlabをどう使うのか判らんから判らんがな。
514 :
デフォルトの名無しさん :2008/05/02(金) 11:03:03
>> 486 MATLABにコンパイラがあるのは本当。C++のコードに一度変換してコンパイルしている。 で、間違いのほうなんだけどある程度高速にはなるけどPureなC++でマシなコードを書いたほうが断然早い。 私の場合画像処理ライブラリ関係でお世話になったけど3割程度しか高速化しなかった。 ちなみにMATLAB7.1環境。
515 :
470 :2008/05/02(金) 11:09:36
>>510 私は研究室のノートPCに入れて使っているけどストレスを感じませんよ。
余程に型落ちなPC(1G以下のCPU)でもない限りOSの推奨スペック程度あれば基本的には大丈夫かと。
スペックはあるに越したことはないけど、必要かどうかは、何の研究をやるかによる
計算量が爆発するようなアルゴリズムが必要な分野でないなら気にしなくて良い。
516 :
matlab初心者 :2008/05/02(金) 11:24:59
matlabの超初心者です。 既にあるプログラムを手探り状態で書き換えているのですが、 行き詰ってしまったので教えて下さい。 ボタンが2個とスライダーが1個あるフォーム(diologueform)を作りました。 そのフォームのmファイルは以下のとおりです。 function varargout = dialogueform(varargin) ・・・ 省略 ・・・ % Get default command line output from handles structure varargout{1} = handles.output; % The figure can be deleted now delete(handles.figure1); % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) handles.output = get(hObject,'String'); % ← この行は自分で追加 guidata(hObject, handles); uiresume(handles.figure1); % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) handles.output = get(hObject,'String'); % ← この行は自分で追加 guidata(hObject, handles); uiresume(handles.figure1);
517 :
matlab初心者 :2008/05/02(金) 11:25:26
(続き) % --- 以下はスライダーについての処理 function slider1_CreateFcn(hObject, eventdata, handles) usewhitebg = 1; if usewhitebg set(hObject,'BackgroundColor',[.9 .9 .9]); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) slider1 = get(hObject,'Value'); % ← この行は自分で追加 ・・・ 省略 ・・・ そして、他の関数のmファイルで、 result = dialogueform; とすれば、 resultに押したボタンの名前が保存されます。 しかし、どうすればslider1の値(スライダーの値)を 他の関数のmファイルで参照できるのかが、 わかりません。 わかりづらい、文章で申し訳ございませんが、 とても困っているので教えてください。
518 :
511 :2008/05/02(金) 11:26:34
まぁ>511は極端な例だけど、matlabで「待つ」ような処理をさせるのであれば2coreは欲しいね。 メモリはあるに越したことはないけど何の計算をするか次第かな。 ってことで、普通にCore2duoのPCを(メモリとディスクをけちらずに)組めばいいんじゃね? GPUをNVIDIAの8800GT辺りにしておいて、CUDAを使ったライブラリを使える可能性を視野に入れてもいいし。
>>518 MATLABって、まだマルチCPUに完全に対応していなかったような気がするのだが、
どのバージョンから対応したのか教えてくれないか?
520 :
511 :2008/05/02(金) 11:56:31
いや、matlabの結果を待っている間、他の作業もできるようにってこと。 matlab自身が対応しているかどうかが理由じゃないよ。 まぁ、Pen4でmatlab動かしてる間にデータの整理しようと思ったら結構かったるかったんでね。
521 :
デフォルトの名無しさん :2008/05/02(金) 12:05:29
>>517 1)slider1 をグローバル変数にするのが一番早いような木がする。
2)荒技だけど、handlesの構造体に変数を勝手に付け加えてそこに書き込むと言う手もある。
handles.slider1 = xxxx;
522 :
matlab初心者 :2008/05/02(金) 12:28:59
>>521 早速のご返答ありがとうございます!
複雑さを避けるために2)を試してみます。
523 :
517 :2008/05/02(金) 12:54:41
>>521 handles.slider1 = get(hObject,'Value');
としたのですが、他の関数のmファイルで、
handlesを参照する方法がわかりません。。。
たびたびすみませんが、ご教授下さい。
524 :
517 :2008/05/02(金) 21:20:46
自力で解決しました。ありがとうございました。
525 :
509 :2008/05/07(水) 18:52:59
もう一度書きこみさせてください 位相特性を周波数で微分して、群遅延を求めたいのですが 「周波数で微分する」の部分をどう書けばいいのかわかりません 位相特性は求めることができているのですが・・・ どなたか助けてください お願いします
位相特性が周波数なのでそれを微分する
この春から、学生はMATLABが18900円で買える件。 アップデートは無しだが、そこそこToolboxも付いてるし使えそうよ。
開いてみるまでPICのスレだと思ってた事はヒミツです
529 :
18 :2008/05/10(土) 14:39:49
>>527 まだ届いてないけど注文しますた。
社会人になってからも株のシミュレーションで使えるし迷わず購入
530 :
デフォルトの名無しさん :2008/05/10(土) 17:41:36
以前に購入したMATLAB 2006b 学生版を新しく買う予定のPCに入れようと思っています。 OSがビスタなのですが、インストールできますでしょうか。 サイバネットのホームページを見ても分かりませんでした(探し方が甘いかもしれませんが)。 親切な方、教えてください。
InternetArchiveから2006年のFAQを一通り見てみたけど、vistaに関する記述はないな。
>>530 以下、僕の経験則だけど。
6.x はライセンスマネージャが Vista に対応していないのでインストールできない。
メインバージョンが 7 になって以降は問題なくインストールできてる。
従って、学生版でも R2006b なら問題なくインストールできると思われ。
余談だけど Vista で 6.x を動作させたい場合は
VMware や Virtual PC を wrapper にしてる。
533 :
デフォルトの名無しさん :2008/05/11(日) 14:49:17
>>531 ,532さん
ご回答ありがとうございます。
すごく助かりました。
おかげさまで安心してPC購入できます。
ところで、別の研究室でVistaにver.6.5(R13)をインストールしようとしててできない奴がいます。
532さんが書かれた要因だったようですね。
その場合、532さんが書かれている方法をとるか、XP以前のOSが入っているPCにインストールすることになるかと思います。
そこでもう一度質問させていただきたいと思います。
恥ずかしながら、「VMware」や「Virtual PCをwrapper」の内容が分かりません。
その設定を使うことでVISTAでもver6.xを使うことは可能なのでしょうか。
その設定は素人が手を出さないほうが良い内容でしょうか。
もし手を出してよさそうなのであれば、どのあたりを調べれば使い方が習得できますでしょうか。
聞いてばかりですみませんがよろしくお願いします。
>>532 >VMware や Virtual PC を wrapper にしてる。
速度はあんまり落ちないってこと?
535 :
532 :2008/05/11(日) 15:39:42
>>533 お役に立てて何より。
簡単に説明します。
VMware や Virtual PC は、Vista 上で別の OS を走らせるソフト、と考えて下さい。
以下、僕の踏んだ手順です。
1. Vista に Virtual PC をインストールする
2. その Virtual PC に Windows98 を導入する
3. その Windows98 に Matlab 6.x をインストール
4. めでたしめでたし。
Virtual PC は MS 謹製でフリー、動作はしっかりしてるけど速度は気持ち遅め。
VMware はこの手のソフトの始祖で歴史があり、様々な OS に対応してます。
各々使い方を知ってて損のないソフトなので、とりあえず触ってみるのがよいかも。
使用法に関して細かく説明しているサイトは山ほどあるので、ググってみて下さい。
ちなみに wrapper というのは、「ラップするもの」の意です。
Vista を 98 の皮でラップして、その環境下で 6.x を動作させるという文脈で
使ってます。good luck!
>>534 おそらく予想どおりの回答で申し訳ないけど、スペック次第。
上述のとおり VMware の方が速度的には勝っている模様だけど、
個人的には Virtual PC でもストレスなく使えてる。
まぁ試してみるのがよいよね。
MATLABとIDLってどっちが実行速度速いですか?
MATLAB学生版、科研費(学振)で買えるそうですよ。 と報告。
538 :
デフォルトの名無しさん :2008/05/13(火) 04:39:49
>>537 どうやって?
HP見ても学生個人が買わないといけないって書いてあるけど。
学振だったらいいんじゃないのかな?
540 :
デフォルトの名無しさん :2008/05/13(火) 23:59:45
ぐぐっても探せなかったので質問させてください。 OSのコマンドプロンプトから直接Matlabスクリプトは叩けないのでしょうか? 自分の調べた限りでは、みんなMatlabを立ち上げて、Matlabコマンドプロンプトからの 実行ですた。 CGIとかでWebからMatlabを動かせたらステキだと思ったので。 やっぱりMatlabを立ち上げないとムリなのでしょうか。
542 :
デフォルトの名無しさん :2008/05/14(水) 16:56:38
大学の講義でMATLABを使って、非線形方程式を自分で考えて解けという講義内容だったのですが、MATLABの使い方が全くわからないので誰か助けてください。
543 :
デフォルトの名無しさん :2008/05/14(水) 18:18:09
いいよ
544 :
デフォルトの名無しさん :2008/05/14(水) 20:19:57
>> 541 ありがとうございました!! 教えてもらったものを元に、いろいろやってみたら、できました!
546 :
デフォルトの名無しさん :2008/05/17(土) 17:29:31
MATLABで作った図をイラレで使いたいのですが どうすればいいのでしょうか?
>>546 ファイル→エクスポート→ベクタを保持できるファイル形式(epsやemf)で保存
→おもむろにillustratorで開く
コマンドラインから画像を保存する場合はprint命令を使う
これでいいかい
>>547 フォントとか座標軸とか、勝手に書き換えられるのではないか?
matlabでオブジェクト指向プログラミングをしたいのですが, どなたか勉強に良いサイトを教えていただけませんか?
550 :
549 :2008/05/19(月) 23:26:55
551 :
デフォルトの名無しさん :2008/05/20(火) 12:15:27
フーリエ変換のグラフで横軸がタイムフレーム、縦軸が周波数binで値が大きいほど濃いグラフ書きたいんですがどんな関数使えばいいでしょうか?
552 :
124 :2008/05/21(水) 11:36:23
初歩的な質問で申し訳ないんですが、 matlabを開いた時に開かれるcurrent directoryの 初期フォルダを変更することって可能でしょうか? わかる方いましたらよろしくお願いします。
553 :
デフォルトの名無しさん :2008/05/21(水) 13:01:07
matlab のショートカットアイコンを作っといて そのプロパティの作業フォルダを変えるとか。 もしくは startup.m を作って cd(foo); とか。
ショートカットアイコンってなんですか?
その質問は、もう質問の体をした荒らしみたいなもの。 google もまともに使えんのに matlab で何をするつもりなのか、答え給え。 ぼくぁいつもマジレスなんだ。
たいしたことじゃないんですが、 a = [0 0 1 1 1 0 0 0 0 1 1 1]; とあったときに、3:4, 9:11 のように連続点を抜き出すのに楽な方法ってないですかね? b = find(a); として b = [3 4 9 10 11]; の状態から 3:4, 9:11 と2つに分ける方法でも良い。 今はループ回しているんですが、matlab だし、何か楽な方法がないかなぁと。 ちなみに、この 3:4, 9:11 の表現は、 c = [3 4; 9 11]; のようにしているのだけれど、別になんでもいいです。
伝達関数からステップ入力に対する オーバーシュートや静定時間を求める関数ってありますか?
558 :
デフォルトの名無しさん :2008/05/22(木) 21:12:07
>>556 aを、微分(差分)してみるといいかもしれない
>>558 おぉおもしろいアイデアだ。
D = conv(a, [1 -1]);
starts = find(D == 1);
ends = find(D == -1) -1;
ind = [starts(:) ends(:)];
でいけました。うほっ。とんくそ。
>>557 stepinfo
ただしR2006a以上のControl System Toolbox
>>560 ありがとうございます。でもうちのじゃ使えなかったみたいです。
あきらめます。
過去にMATLABにLISPのmap関数の様なものがあるかと質問したものです. その後,mexを作って解決しましたが,MATLABには標準で,arrayfunやcellfunといった同様の関数があることが分かりましたので一応報告しておきます.
ちゃんと聞けば教えてあげたのに。
すいません.コンソールで値の入力を要求して,その結果を変数に代入するような文はどう書くのでしょうか? Please imput value of x : と表示させてxの値を入力させたいのです.
inputですた
すいません.自己解決しました.
567 :
デフォルトの名無しさん :2008/06/01(日) 21:22:19
図をepsで保存してイラレで読み込むと マイナスが見えなくなるのですが これってどうしたらいいのですか?
568 :
デフォルトの名無しさん :2008/06/03(火) 14:59:19
feval(fnc,r) でfncに'sin'とかは入れてsin(r)を計算できるのですが、 x^2などのxにrを入れて計算するのはどうすればいいですか。
570 :
デフォルトの名無しさん :2008/06/04(水) 18:58:14
matlabで多目的整数計画問題って解けるんですか? fminimax()の変数が整数版みたいなやつが欲しいんです。 fminimax()の条件をいじって、変数を整数に縛ろうと思ったんですけど、 やり方もわかりませんし・・・
571 :
デフォルトの名無しさん :2008/06/04(水) 21:26:37
縦軸の値から横軸の値を表示することはできますか? たとえば、y=2xのグラフをxを1〜10まで0.1刻みで描いたとします。 そのとき、y=5のときのx値を知りたいわけです。 刻み幅が大きく合致する値がない場合はどうなるのでしょう?
572 :
デフォルトの名無しさん :2008/06/04(水) 21:40:04
matlabの関数の説明が日本語で書かれているサイトないでしょうか? できればURL張ってくださいorz
matlab の中の人たちって何者? 特に toolbox とか数学的に難しいものもあるから、 それを実装できる知識を持っているが、 研究者やらずに matlab 開発しているとか良くわからない。 ph.d 持ちの人たちなのかな?
大丈夫、私も数学的知識はないけど数学関数の実装は(数学屋に書いてもらったアルゴリズムに基づいて)行っている。
577 :
デフォルトの名無しさん :2008/06/07(土) 17:31:53
Unix版とWin版で何か、違いはありますか?
580 :
デフォルトの名無しさん :2008/06/16(月) 09:27:12
変わんない
「MATLAB ヘルプ」でぐぐれ
582 :
デフォルトの名無しさん :2008/06/25(水) 20:53:55
配列のindexing をC/C++みたいに 0 始まりにすることってできますか?
「MATLAB ヘルプ」でぐぐれ
584 :
デフォルトの名無しさん :2008/06/26(木) 19:17:32
587 :
デフォルトの名無しさん :2008/06/27(金) 08:35:39
金かけたくないなら、pylabいいよ
588 :
デフォルトの名無しさん :2008/07/01(火) 04:20:23
h=[1 0.8 0.4 0.2]; x=[1 0 0 0 0]; y=convol(h,x) subplot(4,1,1) xa=1:7; plot2d(xa,y,style=-2,rect=[0 0 8 2]) のプログラムを実行すると plot2d: first and second arguments have incompatible dimensions とエラーが出ます。 どう対処すればいいですか?誰か教えて下さい。
589 :
デフォルトの名無しさん :2008/07/01(火) 06:45:02
xaとyの数が違うんじゃないの? plot2d(xa,y(1:length(x) ... にしたら?
590 :
しっとり :2008/07/04(金) 17:42:43
突然すいません。 MATLABでLeonhardの軌跡ってどのように描けますか?教えて下さい。
591 :
デフォルトの名無しさん :2008/07/04(金) 18:01:39
こんにちはいきなりですが質問です。 例えば100行100列のランダムな値をもつ行列から上位30点の要素を抽出するにはどうしたらいいでしょうか? 誰か教えてください
a=rand(100:100); b=create_set(a); c=b(length(b)-29:end)
593 :
デフォルトの名無しさん :2008/07/05(土) 10:59:13
>>592 素早い回答ありがとうございます
早速やってみます
594 :
デフォルトの名無しさん :2008/07/07(月) 04:26:21
質問です 次のようなアプリを作りたいのですがMATLABを使い始めて日が浅いので見当がつきません、
作り方・コードを教えて下さい お願いします。
フォルダの中に「PC」等の2文字が書かれたbmp画像がN枚ある
一枚一枚を任意の場所で左右にカットする(PとCが分かれるように自分で分ける線の位置を決める)
それぞれ○○○○○L.bmp ○○○○○R.bmpとリネームして同じフォルダに保存する
この作業をN回繰りかえし終了
図:
http://www.dotup.org/uploda/www.dotup.org22131.jpg
595 :
デフォルトの名無しさん :2008/07/07(月) 18:25:14
あんまり甘やかすのは、アレな気がするけどこれでできるはず… 問題は、分割位置が固定されているのか、問題毎に違うのか…。 プログラムで分割位置を判別は簡単じゃないと思うけど % Image Prosessing Toolboxがインストールされていて % 画像ファイルはRGB形式の仮定で行きます % 違う場合は若干書き換えてください filename = { 'image1.png', 'image2.png' }; % ファイル名を書いたリスト l=length(filename); for i=1:1 I=imread( filename{i} ); % 画像の読み込み I=rgb2gray(I); % 画像をグレースケールに変換 [m,n]=size(I); sep=100; % 分割位置を指定 % 画像の保存領域を作成 IR=zeros(m,sep); IL=zeros(m,n-sep); % 画像を転写 IR = I(:,1:sep); IL = I(:,sep:n); % 書き出し imwrite( IR, strcat([filename{i},'R.bmp']), 'bmp' ); imwrite( IL, strcat([filename{i},'L.bmp']), 'bmp' ); end
596 :
594 :2008/07/08(火) 00:29:39
>>595 ありがとうございます
>>問題は、分割位置が固定されているのか、問題毎に違うのか…。
画像ごとに違う位置で分割したいので分割位置を一枚一枚その度に自分で決めれるようにしたいのです
説明が分かりにくかったかもしれません、↓実際のファイル内はこのような感じです
http://www.dotup.org/uploda/www.dotup.org22827.jpg これをそれぞれ「退」と「院」に分割して保存したいのです
しかし画像によって分ける位置が違うので手動で分割位置を決めれれば…と思っています
>>% Image Prosessing Toolboxがインストールされていて
>>% 画像ファイルはRGB形式の仮定で行きます
Image Prosessing Toolboxについて簡単に調べてみましたが
多分インストールされていると思います、MATLABのタイプ(?)は[R2007b]です。
画像ファイルはモノクロビットマップです
>>filename = { 'image1.png', 'image2.png' }; % ファイル名を書いたリスト
画像が1000枚近くあって名前もバラバラなのですが・・・全ての名前を書き出さずにできないでしょうか
cut.mと名付けこのまま実行してみたところ、このようなエラーが出ました。一応載せておきます
??? エラー ==> imread at 315
ファイル "image1.png" は存在しません
エラー ==> cut at 5
I=imread( filename{i} ); % 画像の読み込み
コード中で.pngとファイル名を指定しておきながら.bmp画像しか用意してなかったんだろ そのまま実行するという暴挙に出てエラーが出ましたとか言ってしまう神経が以下略だぜ
598 :
596 :2008/07/08(火) 13:26:40
>>597 その通りですね…冷静に考えればなんと当たり前な…
image1.pngとimage2.pngを用意して実行したところ、今度はこのようなエラーが出てしまいました
??? エラー ==> rgb2gray>parse_inputs at 82
MAP must be a m x 3 array.
エラー ==> rgb2gray at 35
X = parse_inputs(varargin{:});
エラー ==> cut at 6
I=rgb2gray(I); % 画像をグレースケールに変換
599 :
595 :2008/07/09(水) 16:16:09
えっと、答える私も私なんだけど少しだけ叱らせて。 ここは初心者に対して伝統的に厳しいスレではないけれど、それを考えてもあなたのレベルはちょっと酷い。 私も大した事は言えた立場ではないけれどMatlabが可哀想なのでせめてもう少し勉強してあげて。 一応回答するけど、画像を一括指定したい場合は、知恵を絞りましょう。 指定したディレクトリにある画像をすべて取得するならこんな感じ % 指定したディレクトリにあるファイルのファイル名をリストで取得 imgdir = 'sampleimages'; % 画像がおいてあるフォルダの名前 files = dir(imgdir); % 指定したフォルダのファイル名を取得する filename = {}; % ファイル名を書いたリスト % ディレクトリのファイルからファイル名を取得 for i=1:length(files) if exist(imdir+files(i).name) filename{i}=imdir+files(i).name; end end バグがおこっている行はRGB画像をグレースケールに変換するものなので画像のフォーマットの問題。 該当行を I=im2uint8(I); % 画像をバイト型からグレースケールに変換 とかに差し替えてやればよいと思う。 あとは画像の分割位置を手動で決定するにはGUI画面を作らないといけないね。 ここからが初心者には大変なんだろうけど、面倒くさいな…
アルゴリズムを考えることが レポートの課題なり、研究のポイントなんだから、 そこまでここで教えてもらおうなんて思わないように。
>>600 何言ってるんですか、レポートにしろ卒研にしろ、抜ける手は抜くのが一番じゃないですか。
勉強するために大学行くんだろ。 就職のためなら専門学校いけよ。
頭は使わないと劣化していくよ 教授を見ていれば分かるだろ
>>602 何言ってるんですか、専門学校の就職率なんてカスですよ。
605 :
595 :2008/07/11(金) 12:51:43
607 :
605 :2008/07/14(月) 13:46:22
あっはっは、出来が酷いのは手抜き中の手抜きだから勘弁してやってください。まぁ、赤の他人に対しては良くやったよね… ってそういう意味じゃないか… 一応やっている分野の近い相手なので、何となく情が働きまして… matlabのGUIプログラミングはVBなどと比べても決して難しい物ではないけれど、あのレベルで習得させてやらせるのは辛いしね
GUIにせずとも、マウス入力で区域指定できるのではないかと
609 :
デフォルトの名無しさん :2008/07/15(火) 23:33:57
filter関数がC言語でかけねぇ。 誰か作ってないかなぁ
610 :
デフォルトの名無しさん :2008/07/16(水) 00:42:37
どんなフィルター?平滑化なんかの2次元フィルターってこと?
matlab の filter 関数でしょ。
612 :
デフォルトの名無しさん :2008/07/16(水) 07:39:55
そうそう。matlabのbutter関数で係数を求めておいて、 それをつかってfilter(b,a,signal)って使うことのできる関数を Cで作りたいわけ
簡単じゃん。
matlab での代表的なコーディング規約ってないの? built-in 関数みてると大文字はおろか _ すら使ってないのがほとんどな気がするんだけど、そういうもん? ちょっと、これじゃやりにくい。
615 :
デフォルトの名無しさん :2008/07/24(木) 06:52:25
昔のFORTRANの流れを汲んでるから、ひょっとすると関数名は6文字までだったりしてね。 個人的には _ を使った関数名は自作関数というぐあいに区別しているけど。
616 :
デフォルトの名無しさん :2008/07/24(木) 18:29:52
MATLAB(R2008a)で関数自体の引数の数を得る方法はありますか? 無名関数を引数としてその無名関数自体の引数の数を返す関数を作りたいのですが。 また,関数自体はまだオブジェクト化されていないのでしょうか? その様なクラスも見当たらないですし。
617 :
デフォルトの名無しさん :2008/07/24(木) 21:09:47
関数自体ってどういう意味?引数の数はnarginだろ普通
618 :
デフォルトの名無しさん :2008/07/24(木) 21:44:37
619 :
デフォルトの名無しさん :2008/07/24(木) 23:09:42
無理じゃね? matlab は数値演算はいいけど、そういう補助機能が弱いよな。 >関数自体はまだオブジェクト化されていないのでしょうか? そんなことする気あるの?なんかで言ってた?
620 :
デフォルトの名無しさん :2008/07/25(金) 02:27:23
というか、MATLABをプログラム言語としてみるとこれ以上ダサい文法の言語は正直無いと言えると思う。
最初に行列を格好良く計算できる機構と入れたのは良いけど、やっぱり後で条件分岐やループが必要だと入れたあたりから破綻が始まっている
そこからは無計画と言うしかない文法の拡張が行われている
比較的最初に気づくものでも
関数作りたかったら別にmファイルを作ってそこに書かないといけないとか
関数は最後にendで括っても括らなくても良いとか
何故か決して使いやすいとは言えない関数名がC言語風とか
行列計算の書式しか無かった頃だけ直感的で利点があった、何故かインデックスが1から始まるとか
正直、簡潔な書式の行列計算+強力なplot機能+インタプリタですぐ結果が見える使いやすさなのだと思う
本当は文法関係は言語の進化に合わせて再設計が必要な時に来ているのだと思う。もう無理だけど…。
>>614 mlint関数で文法チェックとかどうでしょう?
スライドバーのコールバックで処理するとき、 ドラッグが終わってバーの位置が確定した時だけ処理を行うことはできないでしょうか? バーが変化するごとにいちいち変化してると重いですorz
>>621 アルゴリズムの問題だと思う。
ちょっと考え直したら?
MATLABを使って 下記のようなニュートン法でα(ステップサイズ)を 適応的に求めるプログラムを作りたいのですが、 一向に分かりません。FORTRAN77を今まで使っていましたが 私のいる会社では、今年からMATLABになってしまったのです。 申し訳ありませんがこの掲示板をごらんになっておられる皆様 ご教授御願いいたします。 x(k+1)=x(k)−αinv(H(x(k)))g(x(k)) g(x(k))はf(x(k))の1次微分 H(x(k))はf(x(k))の2次微分
宿題ぐらい自分でやろうぜ つーか、ほとんどmatlab関係なくね?
625 :
デフォルトの名無しさん :2008/07/30(水) 03:43:34
FORTRANならわかるの?なのに matlab だとわからないの?
アルゴリズムが分からないのなら 教科書を読め
matlab を起動すると勝手に IME が日本語入力モードになります。 matlab で日本語入力モードになる意味がわからないので、 止めたいのですが、何か手法はあるのでしょうか?
ここのスレ、性格悪い低脳多いな。
>>627 空白をあらわすのにlower caseを使う人がアメリカ流の人には多いと思う
631 :
デフォルトの名無しさん :2008/07/31(木) 23:33:08
matlabのmファイルからwavをsound関数を使って再生しているのだけど、 途中で止めることができない(;_;)。 途中で止めることはできないのでしょうか? コードは以下 [y, Fs] = wavread('test.wav'); sound(y, Fs);
>>630 lower_case と lowerCamel どっちがいいかなぁ・・・
lower_case は古い流行な気がしないでもないんですよね。
UNIX というか GNU C コーディングスタイル的な。
>>631 最初から止めたい位置がわかっているのなら、
マトリックスの部分指定。
とにかく止めたいのなら、CTRL+C
634 :
デフォルトの名無しさん :2008/08/02(土) 17:41:28
>>632 JavaScriptなんかの場合は最初は自分で書いたライブラリは_で区切るなんて風習もあったけど
そのうちライブラリを自分で配る人達が出てきてそれが普及してからはlowerCamelとJavaScriptの言語の標準に従う様になった。
最初は遊びで書いた関数も、そのうち人に配る可能性が無いわけでもないし、MATLAB標準に黙って従うのが一応正しい姿勢となるのでは?
MATLABの大文字小文字の区別って、完全に可能なんだっけ?
>>634 でも、matlab 標準というと、例えば bankrupt company が
bkrptcmpny みたいなかんじじゃない?
これはひどいでしょ?実際は、ここまでひどくはないけど、
_ もなにもないし、まぁひどい。
>>635 ファイル名 == 関数名、だから windows では大文字小文字が区別つかない。
けど、pca という関数がある時に、Pca を作るようなセンスの人はいないだろぉと思うし、
このために、lowerCamel は絶対ダメ!っていうのはもったいない気がする。
なんだか長くなって申し訳ないけど、 C も標準は、略称使いの _ もなしの lowercase と思っていいいと思うけど、 OpenCV とか OpenGL は lowerCamel を使っている。 個人的には lowerCamel を使いたいのだけれど、 ファイル名 == 関数名の所で悩んでいる。 関数名は lower_case のような形で書いて、変数名は lowerCamel ってアリなセンスなのかな? ところで、private 関数的なネスト関数の名前は最初に _ でも付けようか、 と思ったら matlab では変数、関数名の最初を _ にはできないのね。がっかり。
お前プログラム書くの遅いだろ
640 :
デフォルトの名無しさん :2008/08/05(火) 13:46:17
>というわけで、matlab 標準がどっちつかずなもんで、むきーという状況。 で、個人的意見なのですが、基本的にはMATLABのユーザーは物理系の人で、プログラミングの専門家やほかの言語に詳しい人は少ないのでそういうリテラシは少し低めなのではないでしょうか? OpenCV とか OpenGLとかはC++の文化を意識してああいう風になっているんでしょうねぇ オブジェクト指向を基本的には出来ないとはいえ、一応matlabの関数名の文化は、Cからの影響なのを考えるとlowerCamelの記法は可なのではないでしょうか? > ところで、private 関数的なネスト関数 Lispでは「高階関数」と呼んでいるのでこれに合わせると良いのでは?
速く走らせるには工夫が要るけど それほど大きなパッケージを作るわけでもなかったら、 書法は気にしなくてもいいのでは、って思う。 おれはそのレベルのユーザー。
z = (2*cos(x.)+1)(2*cos(y.)+1) のグラフを書きたいのですが、上記の式で エラー: 一致していないか、予期せぬ括弧か大括弧です。 とでます。x,yの値は x=-3:0.1:3; y=-3:0.1:3; このように設定しております。 どなたか教えてください。
すみません。.の意味を取り違えてました。
645 :
デフォルトの名無しさん :2008/08/07(木) 12:05:48
質問があります エクセルデータを読んでグラフにしたいのですが、ファイルネームが ABC-01.xls ABC-02.xls . . . ABC-09.xls と続くので、forを使って for I=1:9 data=xlsread('ABC-0'num2str(I)'.xls'); hold on plot(data) end としたいんです。 でも2行目にどうやっても忠告がでてしまいます。 文法うんぬん以前に考え方自体が間違ってるのでしょうか?
こんなシンプルなのに考え方もなんも無いって。単純に文法の問題。 「こう書けるだろう」と勘で書いたところがあるでしょ? そういうところが本当に正しいかどうかチェックしてけばいい。 help strings
647 :
デフォルトの名無しさん :2008/08/07(木) 12:55:00
やっぱりそうですよね。 プログラム自体が始めてから数週間なのでグダグダです。 ありがとうございました
アイディアとしてはいい線いっているので、 あと少しだけ、知れば、サクサク作業できるようになると思う。
すいません、ぐぐっても情報が少なすぎたので質問させてください。
JMatLinkというJAVAとMatlabをつなげるツールをインストールしたいのですが、
http://www.held-mueller.de/JMatLink/install.html に書いてある通りにしても上手くいきません。
上のリンク先に書いてあるように,
c:\WINDOWSにJMatLink.dll をコピーし,
c:\JMatLinkでDos窓を開き、
%java TestGui
と打ち込んだのですが,
java.lang.NoClassDefFoundError
というエラーが出てテストウインドウが開きません.
OSはWindows XP, matlabのバージョンは7.3.0、
JAVAはjdk1.6.0_05を使用しています.
どなたか、JMatLinkを使用している方がいましたら、
何が悪いのか教えて頂けないでしょうか。
650 :
デフォルトの名無しさん :2008/08/07(木) 23:14:34
Matlab 2007bと、Viual Studio 2005の質問です。
既存のC++で作られたライブラリの関数をラップして
(要は、mdlOutputs内で既存の関数をコールする)、
C++ MEX S-functionを作ろうとしています。
Visual C++ 2005上で作成/ビルドして、*.mexw32を作っているのですが、
simulink上でこれを実行しようとすると、
「無効なMEX-ファイル*****; 指定されたモジュールが見つかりません。」
というメッセージが出ます。
サイバネットが出している、C-MEX-S-ファンクションチュートリアル
(
http://www.cybernet.co.jp/matlab/library/library/file/T/TT034.pdf?id=TT034 )
の、「5.1 既存Cコードの利用」に、
1. C MEX S-Function 内で外部関数のextern 宣言を行う。
2. コンパイル時に外部ファイルもコンパイルする
とあったので、1.のみ行って、なんとかビルドはできたのですが、まだ同じ
エラーメッセージが出ます。
やはり2.もしないといけないようなのですが、VC++で外部関数も一緒にコンパイルする
方法が、わかりません。
上記のマニュアルに書いてある方法は、Matlabコマンドラインからの
すごく単純な構成のもののコンパイルなので、今やろうとしている、
たくさんのヘッダファイルやらdllやらをリンクしているモジュールの
コンパイルは、とても難しそうです。
>>647 >>646 に書いてあるように help strings すれば
必要なことが書いてるよ。
MATLABはちょっとクセがあるから他の言語を知ってる人が
いろいろひっかかるポイントがあると思うけど
ヘルプはけっこうちゃんとしてると思うから
どんどんヘルプ読んでいけばすぐ覚えるよ。
652 :
デフォルトの名無しさん :2008/08/07(木) 23:34:38
>>616 ezplotとかだと関数じたいを引数として渡してるよね。
無名関数が可能なのかは知らない(たぶん出来ない)。
help function_handle
無名関数は知ってるけど、 その引数の数を調べられないか?ってのが大事なんじゃろ。 で、matlabの引数って function hoge(a,b,c) と書いてあっても hoge(a,b,c,d) と呼べるっちゃよべるし、呼び出しの時点になるまでわからないのでは富田
matlab.exe のオプションってどう見るの? --help でも matlab 起動するし。
>>654 >>652 に答えてるのにお前が知ってたらなんなんだよ。。
だいたい呼び出しの時点の引数の数を呼び出す前に知る方法があるわけないし。
何言ってるのかわからんが。
>>616 で書いてるのは定義にある引数の数だろ。だったらnargin。
[X,Y,Z] = peaks(30); surfc(X,Y,Z) で出る図を png で保存すると、 真っ黒画像が作られるのですが、 みなさんはきちんと保存できたりしますか? ぐぐってもだれも surf がおかしいとか言っていないようで。
GUIでエディットテキストを30個作り、これにあらかじめ定義しておいた15*2サイズの行列Aの 各成分を一つずつ表示しようとしてます。edit1=>A(1,1), edit2=>A(1,2), edit3=>A(2,1)という 具合にです。 set(handles.edit1,'string',num2str(A(1,1))); などとSet文を30個書くのは効率が悪いんで、簡潔に書く方法を探しています。とりあえずevalを 使えばいいのかと思い、 for i=1:30 if rem(i,2)==1 eval(['set(handles.edit' num2str(i) ',''string'','... 'num2str(A(' num2str(ceil(i/2)) ',1)));']); else eval(['set(handles.edit' num2str(i) ',''string'','... 'num2str(A(' num2str(2/i) ',2)));']); end end としてみましたが、「evalのインデックスはpositive integerかlogicalでないといけない」みたいな エラーが出てしまいます。何が悪いんでしょうか。あるいは、eval以外にもっと良い方法があれば 教えてもらえると助かります。
別ディレクトリの関数を addpath せずに実行する方法ってないでしょうか? その関数を実行して、中で一連の addpath をさせたいのです。
>>658 とりあえず sprintf のほうが見やすそう。
>>658 エラーの内容そのまま。
1行づつ、確認しろ。
663 :
658 :2008/08/15(金) 16:53:11
レスくれた人達ありがとう。 うおお、下から3行目の num2str(2/i) は num2str(i/2) とすべきでしたね。evalの性質の理解不足 とか以前の問題でしたorz あと、sprintfを提案してくれた人もありがとう。これからいろいろ試してみます。
>>661 オプションって surf のオプション?どれ?
665 :
658 :2008/08/16(土) 05:21:46
昨日はどうも。もう一つだけ質問させて下さい。
>>658 とは逆のケースで、30個のエディットテキストにユーザーが入力した値を、15*2サイズの
行列Aとして格納することを考えています。
guideでエディットテキストを配置すると、対応するm-ファイルにCallback関数が30個自動的に
生成されるので、それぞれの下部に各行列成分への格納文を書けばいいわけですが、やはり非効率的
なので、もっと良い方法を探しています。
この場合、これら30個の自動生成された関数宣言文を削除し、evalなりfevalなりを使って、30個の
関数を変数を使ってまとめて定義するような文を手で打ってもいいんでしょうか? 確かこの手の、
「guideを経由しないでm-ファイルに直打ち」はNGのケースがある、と何かの本で見たことがある
んですが。
あるいは、このような場合での常套手段が他にありましたら教えて下さい。
>>659 スクリプトでいいならrunでできるけど
関数を呼ぶにははそれと組合せて
function handleを使うとかかな。
それかベタだけど
wd=cd(dir); func; cd(wd);
とか。
>>666 addpath をしたいだけなので、
スクリプトにして、run で呼べばよさそうですね。ありがとう。
668 :
デフォルトの名無しさん :2008/08/17(日) 19:18:43
ランダムな行列の中から局所的な最大値とその座標を求めたいのですが、 何かいい方法がありますでしょうか? max関数を2回使うことで、大域的な最大値は求まるのですが。。 局所的な最大値を求めるアイデアがどうしても出てきません。。 お願いします。
>>668 大域的なmax値をNaNで置換して、複数回走らせる
あるいは
元データを微分する
>>668 局所的な最大値って極大値でいいのか?
いずれにしても「ランダムな行列」がどういうものであるかと
何を「局所的な最大値」と定義するかが決まらないと
答えられないのでは?
671 :
668 :2008/08/18(月) 11:29:38
レスありがとうございます。 具体的に書くべきでした。 例えば、 1 4 6 8 4 6 4 5 1 9 0 7 4 0 9 4 1 6 4 7 5 9 0 2 とあった場合、3列目の9と4列目の2つの9、6列目の7が最大値(=極大値) と考えたときです。 お願いします。
座標が整数値でない画像データを可視化したいんですが、どうやったらいいですか? データの形式としては(x, y)が座標、(R, G, B)が与えたい色として x y R G B 0.1 -1.1 10 20 30 0.5 0.3 112 30 11 -2.4 3.2 3 15 205 のようにn*5(nは行数)のベクトルデータとなっています。 これを穴があってもいいから通常の画像のように可視化したいんです。 点ごとにプロットする色を変えたらいいのかと思ったんですがうまくいかなくて
>>672 座標を例えば 1 - 128 に正規化して、I = zeros(128); 後は for ループで
x = data(n,1); y = data(n,2);
I(x,y,1) = data(n,3);
I(x,y,2) = data(n,4);
I(x,y,3) = data(n,5);
とでも格納しなおして imshow するとかそういう単純な話だろ?
>>671 matlab central れ。
674 :
デフォルトの名無しさん :2008/08/19(火) 04:39:11
ある関数Fの最適化問題を解きたいんだけど、Fがゼロになった瞬間に 最適化を止めて次のことをさせたいような場合、どうしたらいいですか? 最適化にはNelder−Meadを使いたいので、Fminuncより Fminsearchを使いたいです。 Fの値は定義上0より小さくなることはないので、一度0がでてからさらに パラメター空間でサーチするのは単なる時間の無題です。 Fminsearchのコードがわかれば外にIF節をつけれてFの値が 0になったところで止めさせられるものの、どうしていいかわかりません。
A = [1 1 2 1 3 4 5 1 1 2 3 6] みたいなベクトルがあって、[1 2] のある位置を知るのに、 for ループを使わずにすむ方法ってありますか? matlab ならありそうな気がするのですが B = [0 1 0 0 0 0 0 0 1 0 0] が返ってほしい。
676 :
672 :2008/08/19(火) 20:22:10
>>673 即レスありがとうございます
ちなみに正規化ってどうやったらいいんでしょうか
xの列でソート→代入、yの列でソート→代入じゃ効率悪すぎですよね
手早くやれる方法はありますか?
677 :
デフォルトの名無しさん :2008/08/19(火) 21:11:55
1から100の整数をランダムに並び替えるプログラムを教えてください!
>>677 randperm
>>676 ソート?なぜにソートが・・・・
low = [1 1];
high = [128 128];
[N, d] = size(data); % d == 5
mini = min(data(:,1:2), [], 1);
maxi = max(data(:,1:2), [], 1);
data(:, 1:2) = data(:,1:2) - repmat(mini, N, 1); % move min to 0
data(:, 1:2) = data(:,1:2) ./ repmat(maxi-mini, N, 1); % [0, 1]
data(:, 1:2) = data(:, 1:2) .* repmat(high-low, N, 1); % [0, high-low]
data(:, 1:2) = data(:, 1:2) + repmat(low, N, 1); % [low, high]
data(:, 1:2) = fix(data(:, 1:2)); % int
すみません、どなたか
>>665 が分かる方いらっしゃいますか?
本質的には、いかにしてCallBack関数をまとめて設定するか、ということだと思います。
681 :
668 :2008/08/20(水) 14:53:04
>>673 matlab centralにあるということでしょうか?
探してみましたが、わかりませんでした。。
もしよければどれか教えてもらえないでしょうか?
お願いします。
えー、なんで?極大値は英語にしたら extreme か extrema だよ? extrema.m
683 :
668 :2008/08/20(水) 23:06:13
>>682 完全に見落としてました。。
これでいけそうです。
ありがとうございました!
684 :
デフォルトの名無しさん :2008/08/21(木) 10:04:17
for文を使わないことはできますか? 2次関数(ax^2+bx+c)を入力にして、総あたりでa,b,cのパラメータを推定する、というようなことをやっています。 入力をf(x)として、-5<x<5の範囲を見てるのですが、コードは error=inf; for a=-10:1:10 for b=-10:1:10 for c=-10:1:10 for t=-5:0.1:5 e=(f(t)-(a*t*t+b*t+c))^2; if (error>e); error=e; end end end end end というような感じになってます。これをfor文を使わないでコロンを使った形式にできるものなのでしょうか? よろしくお願いします。
685 :
デフォルトの名無しさん :2008/08/21(木) 10:07:19
すみません、間違えてタブを使ってしまったので投稿しなおします ****** for文を使わないことはできますか? 2次関数(ax^2+bx+c)を入力にして、総あたりでa,b,cのパラメータを推定する、というようなことをやっています。 入力をf(x)として、-5<x<5の範囲を見てるのですが、コードは error=inf; for a=-10:1:10 for b=-10:1:10 for c=-10:1:10 for t=-5:0.1:5 e=(f(t)-(a*t*t+b*t+c))^2; if (error>e); error=e; end end end end end というような感じになってます。これをfor文を使わないでコロンを使った形式にできるものなのでしょうか? よろしくお願いします。
686 :
デフォルトの名無しさん :2008/08/21(木) 10:10:21
スペースもダメみたいですね…みにくくてすみません。 よろしくお願いします。
repmat を駆使して4次元配列にまでもっていけばきっとできる。 で、あとは min で argmin うけとる。
688 :
684 :2008/08/21(木) 16:35:55
>>687 ご指摘いただいた方法でできました。
ありがとうございます。
689 :
デフォルトの名無しさん :2008/08/21(木) 21:09:03
>>684 って行列の中身が一緒じゃないんでしょ?
だったらrepmatじゃだめじゃね?
ってか俺も今
for a=1:10
for b=1:5
kotae(a,b)=a+b
end
end
って感じのやってるけど、これfor文じゃなくせるの?
690 :
デフォルトの名無しさん :2008/08/22(金) 00:13:06
matlab centralで拾ったファイルを動かそうと思ったんですが、 「500の最大の再帰呼出の制限達しました。制限を変更するには、・・・」 となって動きませんでした。 制限を2000あたりまで変更しても同じ結果で。3000くらいになるとMatlabが 強制終了してしまいました。 これ何か対処法ないでしょうか。。??
mファイルの作成者に聞くべきじゃない? つか、少しは自分でk
>>689 なくせう。for 文使うとゲロのろいぞ matlab。
693 :
デフォルトの名無しさん :2008/08/22(金) 09:31:00
コロンでできるの?
できる。 kotaeって10x5のマトリックスになるだろ?
695 :
684 :2008/08/22(金) 17:33:09
>>689 meshgridというのを使うとてっとり早いです。
行列にして掛け算する、ということです。
687さんがおっしゃった通り、repmatを使ってもできます。
というか、repmatを使ってmeshgridが実装されてるようなイメージです。
696 :
MATLAB初心者 :2008/08/23(土) 12:06:04
はじめまして。 MATLABをはじめたばかりの初心者なのですが、連番をつけるところで悩んでおります。 文字列の配列で0001、0002、..... 、9999のように整数で任意の桁数にしたいのですが うまい方法はありませんでしょうか? エクセルでやっていたときは、上記の場合であれば”000”という文字列と整数の値を結合し 左から4文字を切り出して使用しておりました。 MATLABでもエクセルでやっていたような力技でやるしかないのでしょうか? もしご存知の方がおりましたら、ご教示いただけませんでしょうか? よろしくお願いいたします。
697 :
MATLAB初心者 :2008/08/23(土) 12:12:11
申し訳ございません。 上記のレスで左から切り出していたというのは誤りで、右から切り出しておりました。
699 :
MATLAB初心者 :2008/08/23(土) 15:46:04
>>698 ありがとうございます。
大変申し訳ございません。私には、このページではsprintfでたとえば”1”を”00001”と定義する方法が理解できませんでした。
整数を5桁で表して、それを文字型にnum2strか何かで文字列に変換するようなことができるということでしょうか?
私の思い付きではstrcatをつかって696に書いたような力技で書く以外に方法がわかりません。
お手数をおかけしますが、ご教示いただいたページのどれを使用すればよいか教えていただけませんでしょうか?
>>699 printf フォーマット
でぐぐればいろいろ解説があるよ。
C言語が元だけど自由度がかなり高いから覚えとくとよい
↓とりあえず解決策
str=sprintf('%05d',i)
701 :
MATLAB初心者 :2008/08/23(土) 16:35:09
>>700 取り合えずというか、そのものずばり私の欲しかった回答を書いていただいて、感謝の限りです。
お忙しい中、どうもありがとうございました。
これからも精進いたします。
702 :
675 :2008/08/26(火) 03:23:35
A = [1 1 2 1 3 4 5 1 1 2 3 6] みたいなベクトルがあって、[1 2] のある位置を知るのに、 for ループを使わずにすむ方法ってありますか? matlab ならありそうな気がするのですが B = [0 1 0 0 0 0 0 0 1 0 0] が返ってほしい。
703 :
デフォルトの名無しさん :2008/08/27(水) 10:05:55
findじゃだめ?
俺の力じゃ5行が限界だった x=find(A==1); y=find(A==2)-1; z=intersect(x,y); B=zeros(1,length(A)); B(z)=1; もっと簡単なのきぼん
面白そうなので参加 ((A(1:length(A)-1)+A(2:length(A))).*(A(1:length(A)-1)==1))==3 正の値で且つ後ろ一つは無視する前提 一般性があるかどうかは知らない
size(A)も使ってみよう
A(1:end-1)==1&A(2:end)==2 レベル低いなあ。 こんなのすらすっと出てこないってことは よっぽど効率悪いコード書いてるんだろうなお前ら。
煽るのは構わんがそれ全部ゼロになるぞ
って1ズラしてるか スマン
MATLABの関数自体のコードを読んでみると 勉強になるんだけどな。
711 :
デフォルトの名無しさん :2008/09/04(木) 13:25:51
質問です。 MATLAB上で画像処理をする際に 画像のある画素(座標)を保存して さらにその保存した座標のx方向成分だけ読み出すには どういったコマンドを入力すればいいんですか?
>>711 まず入門サイトでも読んだ方がはやくね?ってかはやい
713 :
デフォルトの名無しさん :2008/09/04(木) 16:05:56
2008からオブジェクト指向が充実したみたいで、 それについて詳しく解説してある本を知っていたら 誰か紹介していただけないでしょうか。 よろしくお願いします
714 :
デフォルトの名無しさん :2008/09/08(月) 12:56:09
誰か、MATLAB(2007b)で3次元の楕円球体の描き方教えてください。
715 :
デフォルトの名無しさん :2008/09/08(月) 18:24:34
定義したい変数名を、文字列を使って定義することは可能なのでしょうか? 例えば、 Data1 = 1; Data2 = 2; ・ ・ ・ Data30 = 30; と30個の変数を定義したいとき、for文を使って定義することは可能でしょうか?
717 :
デフォルトの名無しさん :2008/09/09(火) 11:36:43
はじめまして、今matlabの勉強をしている者です。 matlabのエディットウィンドウで、文字の挿入ってどうやるんですか? 現状では入力してある行に文字を挿入すると後ろの文字が消えてしまい、 全文入力し直しになってしまうのです、これをwordなどみたいに 文字を挿入したら、文が自動で後ろに移動してくれるようにできないですか? また、同様にスペースキーも文字間のスペースをあけてくれず 文字を消してしまうのですが?どうしたらいいですか? OSは vinelinux4 matalab v7.0.1 SP1です
MATLABっていうか キーボードのinsert
719 :
デフォルトの名無しさん :2008/09/10(水) 13:58:00
GUIを作成して、 ボタンを押すとシミュレーションが実行するようにしたんですが、 GUIなしでコマンドから直接実行した場合だと160秒くらいで終わるのに、 なぜかGUIからだと260秒もかかるんですが、 なんでこんなにかかると思いますか? やってることはまったく変わらないですが・・・。
>>719 全然見当がつかん。
プロファイラを実行した状態で GUI 経由でシミュレーションを行って、
時間のかかっている箇所を割り出してから相談してもらった方がよいと思われ。
721 :
デフォルトの名無しさん :2008/09/11(木) 00:44:20
>>720 アドバイスありがとう。
実はこういう経験あまりしてなかったんで、
プロファイラとか使ったことなかったんです。
ちょっと調べて割り出してみます。
722 :
初心者 :2008/09/11(木) 01:43:15
非常に低レベルなことで申し訳ないのですが、 Cでいうポインタのような概念はMatlabにはないのでしょうか?
>>722 ないはずだよ
wikipediaにも書いてある
まあ、google codeとかmatlab centralで検索すれば
自作のポインタ関数出て来ても可笑しくないけど
>>722 デフォはポインタ
渡された変数を編集しようとした時点でコピーが始まる
>>722 何をしたいのかをはっきりさせて
それをMATLABではどうやるのか、と考える方がいいよ。
他の言語のやり方をそのまま持って来ようとしても
そうは行かない場合は多い。MATLABに限らず。
726 :
デフォルトの名無しさん :2008/09/14(日) 02:33:41
質問です。 例えば 3,6,4,5,2 4,15,7,5,3 6,4,4,7,3 のような行列があってノイズで15だけ値が大きい場合には、 それを周りの数字に近い値に矯正(たしか平滑?)するにはどうすればいいですか? 自分が知ってるやり方だと、ノイズも含め全ての成分が平均化されてしまいます。 どうにかノイズ以外はそのままの値で、ノイズ部分だけを周りの値に馴染ませたいんです。
10はノイズ? 13はノイズ? 15を適当に5とかにしたら「馴染んだ」ことになるの? 自分が何をやりたいかをまずは具体的にする。 君以外にそれがわかる人はここにはいないよ。
実験データの改竄捏造でもしたいのかなw
>>726 if ノイズ
平滑
else
なにもしない
ああ
732 :
デフォルトの名無しさん :2008/09/17(水) 23:20:14
質問です。 Cのプログラム等に記載するための離散時間系のデジタル1次ローパスフィルタを作るためにMATLABでフィルタの係数を求めようとしています。 そのためのプログラムとして、サンプリングインターバル=6ms、フィルタ周波数=10Hzとして、 omega = 2 * pi * 10 T = 1 / omega sys = tf(1, [T, 1]) [num, den] = tfdata(sys) [numd, dend] = c2dm(num, den, 0.006) として求めると、y[n] = 0.6859 * y[n-1] + (1 - 0.6859) * x[n]という式が求められます。 一方で、連続時間系の1次ローパスフィルタの伝達関数(サンプリングインターバル=6ms、フィルタ周波数=10Hz) G(s) = 1 / (1+Ts) を手計算でz変換を行い、離散系のローパスフィルタの式を求めると、(T = 1 / omega、omega = 2 * pi * 10) y[n] = 1 / (1+omega*0.006) * y[n-1] + (1 - 1 / (1+omega*0.006)) * x[n] となるため、値を代入すると、 y[n] = 0.7263 * y[n-1] + (1 – 0.7263) * x[n] となり、先ほどMATLAB関数から求めた式と乖離が出てきてしまいました。 そこで、有識者の方々にお聞きしたいのは 1.そもそも上記のデジタル1次ローパスフィルタの作り方は間違っているのか? 2.c2dm コマンドの中身がよくわからないが、これは計算誤差が出るようなものなのか? 3.離散系に変換したシステムのボード線図を見て特性を確認したいのだが、その場合 も連続系と同じく bode(numd, dend) でよいのか? 長文となってしまい、見にくくて申し訳ありませんがどなたか有識者の方がいらっしゃればご教授ください。
簡単な計算ミスのような気もするのですが、、、
734 :
デフォルトの名無しさん :2008/09/18(木) 22:11:28
周波数とインターバル(周期)とで混乱していない? 間違いを探したいのなら、 他の数字の組み合わせにしてみて、計算してみるのはどうでしょう?
736 :
デフォルトの名無しさん :2008/09/18(木) 23:19:11
>>735 すいません、だいぶ他の数字でもやってみたのですが・・・
基本的な結果としては、低周波(0.01Hz、1Hz)では値の乖離はほとんど見られないのですが、高周波になればなるほどどんどん値が離れていくということになっています・・・
なので、アナログからデジタルに変換するときの計算誤差なのではと思った次第なのですが・・・
MATLAB計算値 手計算値
0.01Hz 0.9996 0.9996
0.5Hz 0.9813 0.9815
5Hz 0.8282 0.8414
10Hz 0.6859 0.7260
どなたかご教授いただけると助かります
>>736 サンプリングインターバルも変えてみたらどう?
738 :
デフォルトの名無しさん :2008/09/19(金) 00:13:17
変えてみた結果は以下の通りになりました。 MATLAB計算値 手計算値 0.5Hz 12msec 0.9630 0.9637 2Hz 24msec 0.7396 0.7683 0.01Hz 480msec 0.9703 0.9707 10Hz 480msec 0.0000 0.0032 という感じで、サンプリングインターバルが大きくなる、もしくは周波数が大きくなると乖離がどんどん大きくなるといった傾向が見られます。 そこで離散系に直したときのボード線図を見て、連続系のそれとの特性の違いを見たいのですが、離散系に直したシステム [numd, dend] = c2dm(num, den, 0.006) bode(numd, dend) という見方でよろしいのでしょうか?明らかに異なった波形が出てくるので、離散系の場合はボード線図を違う見方で見なければいけないのかなと予想しているのですが。。。 見方がわかりませんので、もしご存知でしたら教えてください。
matlabをはじめたばかりなんですが質問です。 stem3でつくったグラフを等高線のグラフにそのまま変えたいのですが、 どなたかわかる方いらっしゃいましたらお願いします。
ステムを輪切りにして上から見て、意味あるの?
>741 値がどのように分布しているか等高線の方がわかりやすいと思い 変えたいのですが。
744 :
デフォルトの名無しさん :2008/09/30(火) 15:46:00
GUIのプログラムについての質問です ファイルguimain.m内で handles.a=1; guidata(hObject, handles); とhandles.aを設定したとき 別のファイルgui2.m内で handles.aを編集する方法はあるのでしょうか function gui2(hObject,handles) handles.a=2; guidata(hObject, handles); ではできませんよね?
745 :
デフォルトの名無しさん :2008/09/30(火) 16:32:46
効率はわかりませんが function out = gui2(handles) handles.a=2; out = handles; として、呼び出し側でguidata(hObject, handles); することで解決しました。
746 :
t :2008/10/07(火) 19:46:19
ベルヌーイの螺旋を描ける方いらっしゃいませんか? 困っています。
描けるよ
>>745 構造体使う必要がないならglobal宣言すれば簡単かと
749 :
デフォルトの名無しさん :2008/10/19(日) 22:46:09
z = f(x, y) を、3次元プロットしたいのですが、 どうやったらよいのでしょうか? 試しに ---------------------- z = [ 0 0.1 0.3 0.5 0.3 0; 0 0.3 0.5 0.3 0.3 0; 0 0.5 1.0 0.7 0.5 0; 0 0.3 0.5 0.3 0.3 0; 0 0.1 0.3 0.5 0.3 0 ]; [x, y] = size(z); surfc(x, y, z) ---------------------- としたのですが、うまくいきませんでした。 おそらく行列のプロットを理解していない と思うのですが・・・。 非常に低レベルな質問で申し訳ありませんが、 よろしくお願いします。
mesh(z)でどうだ
751 :
749 :2008/10/20(月) 00:01:45
>>750 様
早速のご回答、ありがとうございます!
無事、3D plot をすることができました。
ありがとうございます!
MATLABで式の簡単にする変形を一ステップずつやって どうやって、変形して最終の形にするのか 見る方法ありませすか?
意味がわからない。 mathematica?
シンプリファイとかやるときの途中の式がしりたい。 シンボリックマスツールズの
755 :
いかわ :2008/10/24(金) 15:35:48
'"2008-09-23 02:30:00.1"' というフォーマットで書かれたストリングのセルから時間データを抽出するよいアイディアをどなたかご存知でないでしょうか? もしも、''がなく、"2008-09-23 02:30:00.1" というフォーマットならば、sscanf(%d-%d-%d %d:%d:%d); によって時間データを抽出できるのですが。。
日付の区切りがスラッシュにかわったりしただけでも どうすればいいかわからなくなるのかなこういう人は・・。
愛
>>757 回答にはなってないかもしれんけど、
おいらは、加えてBuilder for .NETを使ってMファイルを.NETコンポーネント化
してから、.NET系言語から、そのコンポーネント呼び出して使ってるよ。
A=zeros(100000,100000); だけでメモリ不足になります 余分な変数消去や仮想メモリ等をいじってみましたが効果はありませんでした これを解消するには結局メモリ増設しかないのでしょうか?
>>760 メモリ増設しても無理じゃね?
100000*100000って、数値だけで10Gになるからアクセスすることさえ厄介になってくると思う。
メモリ量的には更に数倍になるわけで、オンメモリで処理するのはどうせ無理だし。
762 :
760 :2008/10/27(月) 18:09:13
>>761 さん
ご回答ありがとうございます
低レベルな質問ですみませんでした
このような行列はMATLABではそもそも扱えない(普通は扱わない)と考えてよいのでしょうか?
株価のシミュレーションでforを使うより行列を使った方が早いため
あのような行列が処理できると助かったのですが
「普通のPC」では扱えない というのが正解かと。 10Gのメモリっていうといわゆるスーパーコンピューターの領域
764 :
デフォルトの名無しさん :2008/10/30(木) 04:26:55
たとえば*を増やしていって、 処理の進行状況を表示したいのですが、 改行を抑制する方法はありませんか?
質問です 複素数の実部虚部それぞれ七桁で表示させたいのですが zに複素数が入っていて sprintf('%7f',z) とすると実部だけが七桁で表示されてしまいます どうしたらよいでしょうか?
関数realとimagを使用して実部と虚部を取り出せばいいじゃない
767 :
デフォルトの名無しさん :2008/10/30(木) 23:07:49
サポート受けられないということは、ここの住人はコピーや労か
768 :
デフォルトの名無しさん :2008/10/31(金) 00:06:48
>>766 ありがとうございます
sprintf('%7f %+7f',real(z) imag(z)i)
のような感じでしょうか?
今試せる環境ではないのでiとかがどうなるのかよく分かりませんが・・・・・
教えてください。 1辺の長さが1の正三角形を上下に並べて出来る平行四辺形をプロットして、 それに含まれるかどうかの判定をしたいのですが、判定条件はどうしたらいいでしょうか。 N個の点を行列で与えて、図形に入っていれば赤、入っていなければ黒という風に 表示させたいのです。 よろしくお願いします
>>769 +の位置が不適切だけどそれを直せばイケル
>>771 すいませんまだ試せていないんですがこうすると実数値の場合に
3+0i
みたいな表示になっちゃいませんかね?
もっと簡単にできる方法ないですかね
773 :
デフォルトの名無しさん :2008/11/07(金) 14:26:53
質問があります 例えばデータシートが1000枚あって、各データシートからX,Y,Zの値を取り出して、 座標(X,Y,Z)をplot3でプロットします。これがこのシートの3次元での点(位置)になりますよね。 それを1000枚分やると3次元空間に点が1000点でき、動きの軌道のように繋がって表示されます(そういうデータなので)。 問題は次なのですが、数十点ほど動きの軌道からはみ出してプロットされた点(多分計測時のノイズ)が 存在します。なのでプロット点全体を平滑化したいのですが、三次元プロットした点をフィルタするのは 可能なんでしょうか。 よろしくお願いします
774 :
デフォルトの名無しさん :2008/11/07(金) 21:04:04
結局の所作業としてはプロットした点をフィルタせずに フィルタしてからプロットするんでしょ?
Matlab C ライブラリの関数 mlfMatrixPrint とか mlfLength とかってどこに行ったの? 昔は matlab.h ってのがあったみたいなんだが、 R2007b だけど、ないんだよね。 matlab 内のビルトイン関数を C から直接呼び出せなくなったの?
スレを675以降もネットリと見てみよう
779 :
デフォルトの名無しさん :2008/11/10(月) 20:04:54
こんばんは。最近MATLABで動画像処理を始めたものですが、 250*350でフレーム数200のAVIの動画をRGBで格納するために T=zeros(250,350,3,200) としてみたのですが、メモリが足りませんと出てしまいました。 解決策がわかりません ちなみにPCはXP Core(TM)2 Duo CPU メモリ2Gを使っています。 よろしくお願いします
[A;B]という行列(n行m列)から [A;A;B;B]という行列(n^2行m列)をfor文を 使わずに 作りたいのですが可能でしょうか。 基礎的な質問でしょうがよろしくお願いします。
>>780 [A;A;B;B]だったらn*2行m列だと思うんですが。
782 :
780 :2008/11/10(月) 23:08:49
例が分かりづらくて済みません。別の例ですが[A;B;C]という行列だったら [A;A;A;B;B;B;C;C;C]という行列を作りたいのです。
>>779 メモリが足りないのものはしょうがないのである。
本当に全部格納しなければいけないのか考えてみるのである
>>782 つまり *3 でいいんだね?
X = [A;B;C] からA, B, C の分解は終わっているものとする。
Y = [repmat(A, 3, 1); repmat(B, 3, 1); repmat(C, 3, 1)]
785 :
780 :2008/11/11(火) 00:57:46
>>784 ありがとうございます。確かに直接記述すればそうなるんですが、
行列の行数が任意の数nであってもそのような行列が作れるか
、つまり各行ベクトルをn個並べてn^2行の行列を作れるかということが
分からないんです。
matlab Mex で X(1,:) ってどうやんの?
>>785 repmat(x, 1, length(x))
788 :
780 :2008/11/11(火) 13:01:35
>>787 おかげで解決しましたーありがとうございます。
789 :
デフォルトの名無しさん :2008/11/11(火) 18:11:41
[id,check] = textread('01.txt','%s%s'); と読み込んだ後 id とすると中身があるのは確認できるのですが fprintf('filename','%s',id); というふうにして書き込もうとするとFunction is not defined for 'cell' inputs. というエラーがでてidをtxtに書き込むことができません。 textreadで読み込んだidをtxtに書き込むにはどのようにすればよいでしょうか? よろしくお願いします。
791 :
789 :2008/11/12(水) 16:00:23
>>789 エラーの内容は分かったんですけれど
セルをtxtに書き込めるようにする方法が調べてみてもよく分かりません
もしよかったら教えてもらえませんか?
よろしくお願いします。
792 :
シン :2008/11/14(金) 12:57:46
MATRABのプログラムで、x1=0、x2=1.2 x3=2.1 x4=3.5 y1=0.3 y2=1.2 y3=2.4 y4=2.7 の4点のラグランジュ補間をとりグラフを出力したいのですが教えてください 。できればfor文をつかった形式でお願いします。あと範囲は0<x<10です。
レベル低過ぎ 説明書読め
795 :
デフォルトの名無しさん :2008/11/15(土) 17:26:18
MATLABのプログラムで、xy平面上の点P(i)=(x(i),y(i)), i=1,2,3,4,5について 5個の点P(i)を適当に設定し、これらの点を順に線分で結んでできる多角形の図を作れ。ただし各点P(i)は*印で示すこと 最後の点P(5)を最初の点P(1)に結んでみよ。 のプログラムを作りたいんですけど、誰かわかる方教えてください。
>>792 plot([1:10], lagrange(x, y));
>>795 line(x, y, '*');
宿題は宿題スレに頼めよ
797 :
デフォルトの名無しさん :2008/11/16(日) 13:49:26
宿題スレのURL教えて!
798 :
770 :2008/11/17(月) 07:40:28
ショボーン(´・ω・`)
>>770 まはやMATLABですらねぇな
三角形の中に点があるかどうかは時計回り(または反時計回り)に
各辺を回ったときに常に辺から左側(または右側)に点があるかどうかでわかる
N角形〜閉曲線の場合でも一緒
800 :
デフォルトの名無しさん :2008/11/18(火) 19:50:56
MATLABで2の5乗根の値を出したいのですが何かいい関数がありませんか? よろしくお願いします
2^(1/5)
802 :
800 :2008/11/19(水) 15:32:16
ありがとうございます。
803 :
デフォルトの名無しさん :2008/11/20(木) 14:09:32
質問です。 MATLAB5.0でフォルダ内のファイル全てに同じ処理を施すようにしたいのですが、 どのようにしたらいいでしょうか? サンプルプログラムを書いていただけたらうれしいです。
自分でかけよ
805 :
デフォルトの名無しさん :2008/11/20(木) 17:45:43
こんばんは。 MATLABで近似曲線を描きたい場合、データがXとYの2軸のグラフでプロットされてるなら、 近似曲線用のコマンドがあるのでできます。しかし今回はXYZの三軸の要素があるデータをplot3コマンドで グラフ化したものに近似曲線をひきたいと考えていて、方法をずっと考えていたのですが全く思い浮かびません。 どなたかアイデアがありませんか?
>>803 name=dir
-------
gnuplotを、Windows 2000のOctave Ver3.1.50 Winows で使いたい、どうすれば?
807 :
デフォルトの名無しさん :2008/11/22(土) 13:26:48
808 :
p :2008/11/23(日) 09:07:11
上の本、高いですね−。 質問です。 plotで線をつなげずにヒストグラムのように描くにはどうすればいいですか? (データは600行ほどのテキストファイルで、それぞれの行に数値が入っています。 それをdlmreadで読み込んでplotしたら横の軸は600までで思い通りなのですが それぞれのデータ点がつながってplotされてしまいました)
hist()があるよ
アッコにおまかせでやっていたけど、
古物商の免許を取って古本屋で、売れ残りかつ専門的な本を安値で買って
アマゾンで売るという商売で月にだいたい10万円、多いときで30万円
の商売している人がいるらしいよ。
>>807 の紹介した本もそういう人が提供している可能性大だね。
ではではノシ
アッコにおまかせで微分方程式 まで読んだ。
812 :
p :2008/11/24(月) 19:25:16
809さん、hist()をうまく使えばいいんですね!ありがとうございます。
813 :
age :2008/11/26(水) 00:56:33
MATLAB R2008b studentバージョン を買いました。 mccを実行しようとしたところ、mccは用意されてなかったみたいです。 studentバージョンだからですか?
matlabの正式バージョンってマジでいくらするんですか?
>>814 MATLABだけ?それとも、Simulinkも?
まぁ、国産の軽〜高級車くらい見ておけばいいんでない?
随分幅のある例を出してきたな。10倍以上あるじゃないか。
ライセンスは細かく分かれているから、組み合わせでかなり変わるしな。
今日、MATLAB EXPOやってるな 聞いてくれば?
ある計算で、メモリ不足に陥っています。 512MB×4のメモリから、2G×2のメモリに増設しました。 zerosでどれだけのサイズを確保できるかを試したんですが、増設しても変わりありませんでした・・・。 10000×10000のゼロ行列でメモリ不足に陥ります。 サイズ増やせると期待したのですが、こんなもんなんでしょうか。 問題の計算のほうも改善できませんでした。どこかおかしいところがあればアドバイスお願いします。 バージョンはR2006b、OSは32bitXPです。
覆面算をエクセルのマクロで解きたいのですが教えてください B、C、Dは0を除外 C A B +) B A C ---------------------- D A B A
>>820 800M だべ?
>>819 他のソフトも入れて (matlab 自体もいれて)、
32bit CPU && Windows なら 2GB の壁があるから、
そんなもんじゃねーがの。
823 :
820 :2008/12/06(土) 14:35:28
>>882 おおう
単純な計算ミスorz
仮想メモリもふやして一応matlabが2G使えるはずだけど800Mなら他の変数しだいか。
やっぱ64bitでやるとかコマンドラインモードでやるとかが必要かもねえ
>>820 >>823 有難う御座います。
clearやって不要な変数などは一切消去して試した結果です。
因みにタスクマネージャーでmatlabのメモリ使用量みたら700M程度でした。
ウィンドウとか最小化すると200Mまで減ったりしますが、こんなもんでしょうか。。
やっぱり64ビット環境かぁ。。。
その場合、ゼロ行列ではどれだけのサイズが確保可能になるんでしょうか?
変数名を文字列に変換することって出来ないのでしょうか? 例えば、行列Aのプロット結果のtitleに「plot of A」とか書きたいんだけど、数が多くて手入力では限界が・・・
826 :
デフォルトの名無しさん :2008/12/09(火) 00:28:04
その変数をシングルクォートではさめば文字列になるよ。
>>825 文字列から変数っつーか、式に eval で変換する、ほうが楽かも
828 :
825 :2008/12/09(火) 21:52:58
>>826 >>827 アドバイスありがとうございます。しかし私の説明が不十分でした。
私がやりたいことは、例えば、
func = [1 2 3]
plot(func)
で[1 2 3]がプロットされますが、そのタイトルに'func'を含めたいのです。
title(func)
ではfuncの中身、つまり[1 2 3]がタイトルに表示されてしまいます。
title('func')
だと、funcとは表示されますが、変数名自信(funcの部分)が変わる場合には自動で対応できません。
そこで、別変数(例えばfunc_name)に変数名を格納できれば
title(func_name)
とすることで、自動でタイトルを付けることが出来ると思ったのです。
そういう関数とかないかなと探しているのですが、なんだかなさそうな気配です・・・
829 :
デフォルトの名無しさん :2008/12/09(火) 22:41:47
title('func')だと自動対応できない、というが その例で変数名が変わったとき plot(func)は対応できるの? 君自身、自分が何をやりたいかが 分かってないのではないか。
>>828 だから、変数名を格納して、eval で展開すれば、というとるやんけ
831 :
デフォルトの名無しさん :2008/12/10(水) 03:25:58
eval使わなくてもMATLABには>825の目的の機能があるよ。 825が何やりたいかちゃんと説明できてないから予想だけど。
>>831 その予想を書けよ。言われる前に書けよ。
833 :
デフォルトの名無しさん :2008/12/10(水) 23:04:31
まともに質問できない人には質問になってないよって 教えてあげるのが親切ってもんだよ。
834 :
825 :2008/12/11(木) 00:09:46
不評を買ってしまったようで・・・
実はプログラミング自体にあまり慣れていないもので、上手く伝えることが出来ないみたいです。
アドバイスを元にもうちょっと試行錯誤してみようと思います。
>>829 そこは泥臭い手法を採ってまして・・・
あまりに下手なので説明は遠慮させていただきます。
泥臭くて良いのなら引数で渡せばいいじゃんとか言われるとそれまでなのですが、
機能として有りそうにも拘わらず見つけることが出来なかったため質問した次第です。
>>830 ありがとうございます。調べて試してみます。
>>831 説明が上手くなくて申し訳ないです。
>>834 >機能として有りそうにも拘わらず見つけることが出来なかったため質問した次第です。
そんな機能必要ないから存在しないだけだから
836 :
デフォルトの名無しさん :2008/12/11(木) 01:57:53
プログラムに慣れてないとかいう問題ではたぶんなくて 自分がやってることとやりたいことを全部書いてないだけだと思うよ。 >825 > 変数名を文字列に変換する をしてくれるvarnameという関数が仮に存在したとしても あなたの質問の例では意味がない。 func = [1 2 3]; plot(func) title('func') を func = [1 2 3]; plot(func) title(varname(func)) と書けても「手入力」の節約になってない。 plotとtitleの部分を関数にしたいということなら分かるけど。 help inputname
そう。だから文字列配列を作って eval で展開するのさ。
funcnames = { 'func1', 'func2', 'func3' };
for i = 1:length(funcs)
eval(sprintf('plot(%s)', funcnames{i]));
title(funcnames{i]);
end
>>831 eval 使わないとなるとどうやるんだ?参考までに教えてくれ。
838 :
デフォルトの名無しさん :2008/12/11(木) 07:16:07
839 :
デフォルトの名無しさん :2008/12/11(木) 17:53:58
> eval 使わないとなるとどうやるんだ?
>>836 に書いてあるんだけど。
evalもいいけどデバッグしにくくなるし
よほどの理由がある時以外は使わない方がいいよ。
>>839 書いてないよ
>varnameという関数が仮に存在したとして
841 :
デフォルトの名無しさん :2008/12/12(金) 02:59:31
> help inputname
>>841 は?inputname は全然ちゃうやろ。help みたんかいな
843 :
デフォルトの名無しさん :2008/12/12(金) 07:57:51
頭悪いのにえらそうな人ってやっかいだね。
>>828 で
func1 = [1 2 3];
func2 = [4 5 6];
plot(func1)
title('func1')
plot(func2)
title('func2')
とすると数が多くなったときにtitleを
いちいち書くのが手間だっていうんだから
plotfunc(func1)
plotfunc(func2)
function plotfunc(f)
plot(f)
title(inputname(1))
end
でしょ。
844 :
デフォルトの名無しさん :2008/12/12(金) 08:01:52
あ、テストせずに書いたけど plotfuncの中にfigure追加しないとだめですね。 もとの質問者がsubplotとか使ってるなら そのへんは適当に。
845 :
デフォルトの名無しさん :2008/12/15(月) 18:02:33
m個のデータから正規方程式を使い A=Cexp(Bcosφ)を知りたい時どうすればいいですか? Bは定数で、未知のCとφが知りたいんです。 未知定数が2つで積っていうのがよくわかりません
846 :
デフォルトの名無しさん :2008/12/15(月) 18:20:25
m質点の串団子モデルの剛性マトリクスをfor文を使って次のように書いたのですが、 for文を使わないで書く方法はありますでしょうか? for文をなるだけ使わないのがMATLABっと以前のレスで見たのですが、 何分プログラミング自体初めてでして。。 row_m = input('Enter m = '); k0 = input('Enter 0 or 1 ='); switch k0 case 0 k1 = input('Enter k = '); kk = k1*ones(1,row_m); otherwise kk = zeros(1,row_m)+input('Enter kmatrix = '); end K = kk(:,1); for N = 2:row_m K0 = [kk(:,N),-kk(:,N);-kk(:,N),kk(:,N)]; K1 = [K,zeros(N-1,1);zeros(1,N-1),zeros(1)]; K2 = [zeros(N-2),zeros(N-2,2);zeros(2,N-2),K0]; K = K1+K2; end ここはこうしたほうが良いなどなんでも結構ですのでご助言を頂けると幸いです。
for N = 2:row_mなくして Nの代わりにまんま2:row_mを使え
849 :
デフォルトの名無しさん :2008/12/19(金) 03:19:52
すいませんがよろしくお願いします。 waveファイルをインポートするにはどうすればいいのでしょうか? helpをみてもできません。 [y,Fs,Bits] = wavread('onsei1.wav'); と入力したら、 ??? エラー ==> wavread at 67 ファイルを開けません とでます。 誰か教えてください!
plotで図示したグラフとcontourで図示したグラフを重ねて表示する際、 X軸Y軸が逆になってしまいます。 contour(y,x,z)とすれば軸はあうのですが、いまいち納得いきません。 どうしてこうなるのでしょうか?
851 :
デフォルトの名無しさん :2008/12/20(土) 07:17:39
画像をimresizeでbicubicで補間しながら拡大・縮小したときの動作確認がしたいのですが どうしたらいいでしょうか? もしくはbicubicで補間しつつ拡大縮小を少数精度の倍率を与えたときに正確に動作が 保証できるプログラムを組んだことのある方いらっしゃいませんか? ソースをアップして欲しいのです・・・。修士論文が間に合わない・・。
Y = find([0 1 0 0 1]) Y 2 5 の逆ってどうやるんでしたっけ?
>>849 ファイルがそこにないんじゃない?
>>850 meshgrid を使ったと仮定して、
meshgrid の使い方間違ったんじゃない?
854 :
デフォルトの名無しさん :2008/12/24(水) 00:27:15
855 :
デフォルトの名無しさん :2008/12/25(木) 13:57:23
プログラム初心者です。 MATLABを使えるようになりたいんですが 基本的な使い方とか解説してあるいいサイトとかあったら教えていただけないでしょうか。
サイトではないですが、「MATLAB+Scilabプログラミング事典」という書籍にはお世話になりました。MATLABに似たscilabについても記載されていますが。 後はMATLABのhelpでしょうか。
857 :
855 :2008/12/26(金) 11:56:00
>>856 ありがとうございます。
探してみようと思います。
Student Editionって以前は自分名義のクレジットカード+HPへの登録+学生証のコピーの郵送が必要って Q&Aに書いてあったと思うのですが、今は生協で買えるんですねー その場合は上記の郵送とか面倒な作業は必要ないんでしょうか。
>>859 返事遅くなってすいません。
煩雑な手続きは無くなったんですね。ちょっと興味有ったので買ってみることにします。
ありがとうございました。
scilabってコマンドはマトラボとおなじなんでしょうか? 家でもやろうかと思ってるんですが
862 :
デフォルトの名無しさん :2009/01/06(火) 00:54:09
言い直すと学校でマトラボを使っているんですが 家でもやりたいのでscilabをだいようできるでしょうか?
freematは?
867 :
MATRAB_Mathematica :2009/01/08(木) 21:47:19
下記をMathematica上で使うにはどうすればいいですか? Seq = {-0.2266091476053614,0;[0.2155407618197651,-1.2670686037583443],0; [-4.2551584226048398,0.5047757263881194],2; [0.2331599353469357,0.0447459687134724],-2; [6.6244572505007815,-18.389000853969371],4; [-0.0567684937266291,0.1443950619899142],-4;-5.5119344180654508,5}; ScaleS = -0.5985483742581210; ScaleD = -1.6707087396895259; Family = 'Symlet';
matlabでH.264動画を表示させるにはどうしたらよいのでしょうか。 「mmreader」で読み込んでも走査線が分かれて表示されます。 インターレース動画は奇数偶数をいじって解除・表示できたのですが、 H.264やmp4コーデックでエンコードされた動画は上1/3が黒く表示され、 走査線がバラバラに表示されます。 H.264動画の走査線をどのように分解したらよいのか詳しくわかりません。 詳しい方がいらっしゃいましたらよろしくお願いします。
プログラミング初心者です。画像処理の質問です。 ある画像から2値化を行い,1つの物体だけを取り出そうと考えています。 bwlabelを使ってラベル画像を作った後に,ラベル付けされた各物体の特徴量として面積と円形度を求め,ある範囲に入っている物体1つを取り出したいのですが,よくわかりません。 調べたところbwselectがあったのですが,これは画像をクリックする操作があるため出来れば避けたいと思っています。 わかる方がいましたらアドバイスを頂けないでしょうか? よろしくお願いします
MATLABを使っていて分からないことがあったので、画像処理について質問させてください。 0〜1の間の乱数を128×128の行列に入れて、これをXと置いた後、 imshow(X,128)で濃淡レベル128のグレースケールで表示します。 これで、白〜黒の画像が表示されるのですが、これを白〜赤のように色をつけて出力したいです。 colormap(Red);imshow(X,128) でできるかと思ったのですが、上手くいきません。どうすればよいか教えていただけないでしょうか。
>>870 MATLABよく知らんから逆に聞くけど、colormap(Red)するとどう出力されるの?
もしかして、黒-灰-白が黒-赤-白になるとか? colormapの仕様をよく調べてみるといいんでない?
Redがサポートされてないってオチだろ Hotとかにしてみ
873 :
デフォルトの名無しさん :2009/01/27(火) 21:20:12
2次元画像処理で、ハイパスフィルタを書いたのですが このコードで正しいのか自信がもてません。 何方か、分かる方がいらっしゃいましたらご指摘願います function I=highpass2(I,THV) % ハイパスフィルタ function I=hp2(I,THV) I=double(I); I2=fft2(I); I3=abs(I2); [m,n]=size(I); for k=1:m; for l=1:n; if( I3(k,l)<THV ) I2(k,l)=0; end end end I = uint8(real(ifft2(I2))); end I = hp2(I,THV*1000); end
874 :
873 :2009/02/03(火) 20:31:01
スレ汚し失礼いたしました。 どうも上のコードで良かったみたいですので、高速化ver貼り付けておきます。 function I=highpass2(I,THV) % ハイパスフィルタ % THVは0〜255の間でお願いします(0〜10推奨) function I=hp2(I,THV) I=double(I); I2=fft2(I); [m,n]=size(I); I2=I2.*double( im2bw( abs(I2)./(m*n*255), min(THV./255,1.0) ) ); I = uint8(real(ifft2(I2))); end [m,n,o]=size(I); for i=1:o I(:,:,1) = hp2(I(:,:,1),THV); end end
875 :
デフォルトの名無しさん :2009/02/05(木) 12:28:10
Linux用Matlabについての質問です。 32 bit版のmatlabがあるのですが、64bitカーネルのLinuxで動きますか?
つかってるLinuxによるとしかいえない。
877 :
デフォルトの名無しさん :2009/02/10(火) 07:48:30
plotでデータ数5000の系列を、同じグラフに5本書きます。 それぞれの系列をカラーでわけたくない場合はマーカで区別すると思うのですが、 データ数が5000だとどのマーカも潰れて見えません。 データ数100個飛ばしでマーカをつけるなど、そのような飛び飛びでマーカをつける方法はありますか?
878 :
デフォルトの名無しさん :2009/02/10(火) 11:47:31
カラーバーにおいて、特定の値の色を指定する方法を 教えて頂けないでしょうか。 今、カラーバーの範囲を[a, b] (a < 0 < b) にして、 0 の色を白に指定したいのですが、苦労しています。 よろしくお願いします。
879 :
デフォルトの名無しさん :2009/02/14(土) 07:56:25
880 :
デフォルトの名無しさん :2009/02/22(日) 20:44:57
eval関数について質問です. 変数を文字列化してテキストボックスとしてfigureに挿入しようと 思っているのですが,以下のようにやってもうまくいきません. eval(['text(20,70,',num2str(k),',''FontSize'',16,''FontName'',''Century'');']); 基本的に([])内の'と,の使い方についてよく理解していません. '〜',〜,'〜',〜,… のような順番で結合したい要素を配置して, ''内に更に'〜'のような表現がある場合''〜''に書き換える決まり?が あるんじゃないかと勝手に解釈して上記のコマンド書きました. 非常にややこしい文になりましたが,そこらへんの事も含めて ご教授いただきたいです.よろしくお願いします.
882 :
880 :2009/02/24(火) 00:16:41
>>881 仰るとおりのコマンドでうまくいきました.
リンク先も一応見た事あるのですが,evalで長いコマンド括る方法が無かった物で…
おそらくevalで一括するよりも,先に文字列作るなりしたほうが良いのかも知れませんね.
ありがとうございました.
plot([0.1:0.1:0.9 0.91:0.01:0.99], [0.1:0.1:0.9 0.91:0.01:0.99].^2) こんな意味のプロットを plot(1:18, [0.1:0.1:0.9 0.91:0.01:0.99].^2) のような表示でプロットしたい(x 軸の点ごとの間隔を等間隔にしたい)のですが、 上のようにプロットすると、x 軸のラベルがもちろん、1,2,3,4 のようになってしまいます。 このラベルは [0.1:0.1:0.9 0.91:0.01:0.99] のままにしたいのですが、 どうようにすれば実現できるでしょうか?よろしくお願いします。
>>883 plot(1:18, [0.1:0.1:0.9 0.91:0.01:0.99].^2)
でプロットしてからXTickLabelを変更すればいいんじゃない?
そんな姑息な真似はいやなんです。
そうかい、すまんね。
887 :
デフォルトの名無しさん :2009/03/06(金) 14:46:30
既出かもしれませんが、 たとえば、(z-0.99)/(z-0.58)みたいな伝達関数があって、 任意のzdをzに代入したい場合、つまり、zd=0.45+0.53jをzにいれるには どうしたらできるでしょうか? それとも、そもそもMatLabではできないですか?
伝達関数、と限定した言い方をするってことは こんな↓単なる台数方程式的な話ではないんですよね。 z=0.45+0.53*j x=(z-0.99)/(z-0.58)
なんだか分野を書かない質問が多いよね。 信号処理の質問を経済学の人が見てもしょうがないのにさ。 ちなみに filter だったと思う。 signal processing toolbox に一度ひととおり目をとおしておくとよいでしょう。
>>888 方法が見つからなかったので、結局、代数方程式を新たに作って解決したのですが、
もし、tfで作った関数に当てはめることができれば、そういった手間を省けると
思って質問しました。
>>889 すいません。分野は機械工学のデジタル信号処理です。離散時間を扱ってます。
あと、
そういったツールボックスがあるのですね。勉強になりました。
891 :
デフォルトの名無しさん :2009/03/17(火) 22:46:36
どうもすいません。matlabのコードを.Net向けにコンパイルを行ってその結果を受け取っているのですが function [a,b] = func( c ) の様に引数を2つ以上返すとき、どうすれば2つとも受け取れるのでしょうか? というより文法的に何か可能は方法があるのでしょうか?
>>891 何の言語を使っているのか知らんが、その言語スレで聞いたら?
まぁ、構造体を作ってって処だろうけど。
893 :
abc :2009/03/18(水) 16:27:20
行列の列ごとに、0で無い値の中での平均を求める方法を教えてください。
for i = 1:size(A,2) mu(i) = mean(A(A(:,i) ~= 0, i)); end いや、 mu = sum(A, 1) ./ sum(A ~= 0, 1) こっちのほうがスマートかな
meanの引数に直接行列をぶち込むのと結果が変わらなくね?
mean なら0もカウントしちゃうぜしょ。
897 :
デフォルトの名無しさん :2009/03/19(木) 22:33:19
figureで軸を指定した関数で表示するにはどうしたらいいでしょうか? logプロットの様な感じでlog以外の指定した関数で表示したいです。
基本的な0次、1次のBessel関数でMATLAB組み込みより速いのってありますか?
3次元において、ある点(x、y、z)のz座標によって点の色を変えたい(例えば正なら赤系、負なら青系)のですが、何か良い方法はありませんでしょうか?
900 :
デフォルトの名無しさん :2009/04/09(木) 12:34:21
答えていただけたら幸いです。 n×m行列から、任意の数の列をランダムに抜き出すプログラムはありますか? 宜しくお願いします。
あります。
902 :
デフォルトの名無しさん :2009/04/09(木) 12:48:50
>>901 さん
返事ありがとうございます。
具体的にはどんなプログラムですか?
>>902 「具体的」も何も、一行二行で書ける程度の簡単なものです。
このような場合、礼儀として、まず自分が試したことを説明すべきでは?
Matlab をどの程度習得しているのか。何が出来て何が出来なかったのか。
都合よく答えだけ貰おうとする姿勢は物乞いのそれです。
904 :
デフォルトの名無しさん :2009/04/10(金) 11:06:11
>>903 4月に入ってからmatlabの勉強をし始め、書いてあるプログラムは
理解できるのですが、自分で組むことができません。
サーバーネットのサイトや本を参考にしようと探したのですが、
見つけることができず2chにきました。
ぜひ教えていただけませんか?
905 :
デフォルトの名無しさん :2009/04/10(金) 11:11:45
なるほど。
個人的に一番役に立つリソースは本家 mathworks のサイトだと思います。
そちらも参照して頑張ってください。
>>679 にもありますが、今回は randperm を使えばよいでしょう。
「任意の数の」列を抜き出す箇所はご自身で組んでみてください。
dat = [1 2 3; 4 5 6];
result = dat(:, randperm(size(dat, 2)));
907 :
デフォルトの名無しさん :2009/04/10(金) 13:03:34
>>906 ありがとうございます。
randpermを使って組んでみようと思います。
908 :
デフォルトの名無しさん :2009/04/13(月) 12:18:17
909 :
student :2009/04/15(水) 20:42:57
MATLAB環境で動くプログラムに関する質問です。 最近MATLAB2008b student version を購入した素人なのですが困っています。 「MATLAB環境であれば特に設定はいらず、非MATLAB環境であればMCRを インストールすれば使えます。」 のような説明がされているプログラムを起動しようとしても "Could't find the mclmcrrt79..." のようなエラーが発生して起動できませんでした。 しょうがないので適切なMCRをインストールしたら起動できるように なったのですが、どうしてMATLAB環境であるはずなのに そのままで起動できないのでしょうか? student versionだからでしょうか? MATLAB環境用にしか作られていないプログラムも使いたいので、困っています。 m-fileを開くとMATLABは普通に動き出しているのでMATLAB自体は正常だと 思うんですが・・・ どなたかご教授くださりましたもう。 Win/Vista/Home Premium SP1
そのプログラムとは何ぞや? 「MATLAB環境であれば特に設定はいらず、非MATLAB環境であればMCRを インストールすれば使えます。」ってそれらしく説明してても、 実は無条件に mclmcrrt79.dll を読みに行ってる駄目プログラムの可能性もあるよね。
質問させて頂きます。
urlread('
http://eow.alc.co.jp/love/UTF-8/ ')
としてwebの情報を取得しようとしているのですが、以前はできたのに突然できなくなってしまいました。
サーバーの方からアクセスを拒否しているのか、それとも私の方の設定が間違っているのかわかりません。
どなかた上記のコマンドを実行してwebの情報が獲得できるか確認していただけないでしょうか?
>>912 ですかね?
そうするとプログラミング初めから書き直しですね・・・
>>911 >>913 ヒント
そのサイトは HTTP_USER_AGENT を見て、
コンテンツの表示を制限している。
>>913 プログラミングは書き直しじゃないと思うぞ。
逆はさておき、MATLABの話題じゃない希ガス。
>>914 ありがと。ということは
java.lang.System.setProperty('http.agent','agent-name')
でUserAgentを変更すればいいんですね。
再度質問なのですが、UserAgent名を変更した後、どのようにUserAgentをデフォルトに戻すことができるのでしょうか?
917 :
916 :2009/04/18(土) 06:50:12
java.lang.System.setProperty('http.agent','agent-name') じゃできんかった・・・
MATLABで成分が具体的な数字ではなくa,b,c等の文字からなる行列の 行列式をdetという関数で表示させることは出来ますか? それとも全て具体的な数値出なければ出力してくれないのでしょうか |a b c| |d e f| ←このような感じの行列です |1 2 3|
matlab知らんけど、試してみればいいんじゃね?
シンボリック関数
Mathematica使えばいいじゃない
>>911 そうか、確かに駄目プログラムという可能性もありますね。
実はある種の映像解析ソフトでありまして、ジャーナルNature Methodsに
載った論文で公開してるやつなんですが、
http://www.nature.com/nmeth/journal/v6/n4/extref/nmeth.1310-S12.zip といきなりリンクはっていいのか知りませんがどなたかご興味があれば
試していただけたらなぁなんて、、
ここでこういうのはちょっと場違いですかね。。
ただ自分の環境(MATLAB student 2008b on Win Vista)だからダメなのかソフトが悪いのか
わからなくて。
ちなみに
MCRをインストールする前: "Could not find the mclmcrrt79..." というエラーが出て起動できない
MCRをインストールした後: 一応起動はできるが、動画ファイル(avi or wmv形式)を読み込もうとするといきなり終了してしまう
という状況で困っているんです。
まぁ、製作者に聞けって話ですがねぇ(英語でのコンタクトがちょっと面倒ですが‥)
なら直リンするなよ・・・
>>923 まぁ直リンの何がマズいかも知らなさそうな子だから大目に見てあげなよ。
>>922 このアプリケーション、Matlab 入ってる環境でも実行時にエラー出るね。
ソースを見ても MCR のラッパー呼びまくってるから、
MCR 必須ということで終了。
>>924 直リン以後気を付けます。。
MATLAB2008bが必要とだけ説明があったんですが(それ以上のヴァージョンは不明)
結局はMCRが必要だなんて。。
でもってMCR入れたところで、起動はできても動画読み込めないし。。
ちゃんとしてほしいわぁ。
というかわざわざ試して、
そしてソースまで見てただいてありがとうございました。
優しい方もいるんだなぁとちょっと感動。
直リンの何がまずいのか本気で分からん ボットがDOSでもしかけんの?
927 :
デフォルトの名無しさん :2009/04/22(水) 23:28:15
時間変化する3次元の座標データがあり、それの時間変化をプロットしたいのですが、どのような手法を使えばいいのでしょうか??
>>928 どう見せたい(見たい)か、によるんでないの?
4次元データにxyz座標と時間が入っているので、時間に連動して座標変化の軌跡を表示したいです。 figureで時間変化を追ってプロットしていくのに必要な関数などがわかりません。 ご教授お願います。
どう見せたい(見たい)か、によるんでないの? 3次元ディスプレイなんてものが使えるわけじゃないんだろうから。
>>931 こぴられたw
>>930 時間変化しない3次元のデータだったらプロットの仕方はわかる?
それがわかれば、あとは一定時間で区切って再描画コマ送りするなり、
それをアニメーションとして保存するなり、お好きなように
Cソースで書くS-Functionで、複数のデータ型を含むバス信号を入力として 受け取りたいのですが、方法が見つかりません。 もしかして、S-Functionではデータ型が混在するバスやベクトル信号は 受け付けられないのでしょうか? もし受け付ける方法があるなら教えていただけないでしょうか? よろしくお願いします。
>>933 ポートをわけて渡さないとダメじゃないかなあ
>>934 やはりそうですか・・・
データ型を取得するマクロがポート単位のものしかないですもんね・・・
複数データ型のバスを受け取らなくても良い方法を考えることにします。
ありがとうございました。
>>932 その都度figureを立ち上げてコマ送りのように表示することはできたのですが、もう少しスマートにできないものでしょうか??
一定時間で区切りコマ送りする手法を教えていただきたいです。
938 :
デフォルトの名無しさん :2009/05/18(月) 01:03:00
差分方程式 x(n+2)+a_1x(n+1)+a_0x(n)=0 , x(0)=x_0 , x(1)=x_1 , n=0,1,2,∙∙∙ の階x(k)=0,1,2,∙∙∙,t_fを求めるプログラミングを作成せよ。また、次のデータについて実行せよ。 a_0=0.3 . a_1=-1.5 , x(0)=1 , x(1)=2 , t_f=10 のプログラムが作れません。誰か教えてください!お願いします!!
939 :
デフォルトの名無しさん :2009/05/18(月) 20:26:05
質問です みなさんマトラボはいつ頃から勉強はじめました? ぜひ教えてください
>>939 初めて触れたのは学部4年前期の制御工学の授業
941 :
デフォルトの名無しさん :2009/05/18(月) 21:29:00
>>938 久々のレスが宿題かよ!
x(n+1)+a_1x(n)=0, X(0)=X_0
なら作れる?
>>939 おれも940と同じ
943 :
デフォルトの名無しさん :2009/05/19(火) 10:26:37
ちょっと質問させてください。 assignin関数でfunction 内の変数をWorkSpaceに置きたいんですけど、 その際に変数名を配列で指定するとエラーがでて出来ません。 何か良い方法はないですかね? こんな感じで書いてます。 function hoge str =[ test1 test2 ] for i=1:2 assignin('base',str(1,i), 2); ←ここでエラー end よろしくお願いします。
三つアドバイス。 1. エラーメッセージをしっかり読む 2. ブレークポイントを設定して、関数実行時の変数の中を見てみる 3. 文字配列とセル配列の違いと扱い方を体で覚える function hoge str = { 'test1' 'test2' }; for k = 1:length(str) assignin('base', str{ks}, 1); end あと、matlab では i は虚数を意味する(i * i = -1)ので、 できるだけカウンタとしての使用は避けるべきなのだそうな。 標準的な関数群でも平気で i がカウンタとして使われているけれども。
ごめん typo があった。 function hoge str = { 'test1' 'test2' }; for k = 1:length(str) assignin('base', str{k}, 1); end
>>945-946 素早く丁寧な返事をありがとうございます。
1と2に関しては実行しました。
エラー文は読んだのですが、不適切な文ですとしか出ず
str(1,i)を 'test1' におきかえると正しく動作したので、str(1.i)が
間違っているということはわかったのですが、そこから進まなくて・・・。
セル配列{}? と文字配列()の違いでエラーが出てたという事ですかね?
str(1,1)とコマンドラインに入れればtest1 が帰ってきたので、
eval(str(1,1))
などを入れてやれば解決するかなと考えたのですが、これでもうまくいかず・・・。
また、明日学校で試させてもらいます。ありがとうございました。
この例題なら自宅でOctave使って試すこともできるぜ
>>948 お勧めされたので早速やってみました。
実は質問外なので省いたのですが、最初の
str = { 'test1' 'test2' };
を取ってくる際にimportdataを用いてエクセルファイルのヘッダを取得しているのですが、
その辺りの関数がOctaveにはないようですね。
ただ、上記の関数がOctave上で正しく動くことは確認できました。ありがとうございます。
明日学校でMATLAB上でも正しく動くか検証してみます。
すごく初歩的な質問ですまんが %f(x)=x^2-5 N0=100; TOL=0.0000001; XL=1; XR=5; i=1; FXL=XL^2-5; while (i<N0) XM=(XL+XR)/2; FXM=XM^2-5; if (XM==0 | (XR-XL)/2<TOL) disp(XM); return; end i=i+1; if (FXL*FXM>0) XL=XM; FXL=FXM; else XR=XM; end end disp('解が得られない'); このプログラムを関数x^3-7x^2+14x-6で動かしたいんだけど、どこをどう書き換えればいいのかわからん 自分でやるといつもFXM=のところでエラーになる 教授から丸投げされて、もうお手上げ状態なんで誰かアドバイスください
>>950 学校のPCからじゃ書き込めないから携帯からになるけど
7行目を
FXL = XL^3-7*XL^2+14*XL-6
11行目を
FXM = XM^3-7*XM^2+14*XM-6
にすればいいのでは?
>>945 ,946
遅くなりましたがMATLABでも動作確認できました。
丁寧なアドバイスありがとうございます。
俺はmaximaに移行した
954 :
デフォルトの名無しさん :2009/05/28(木) 19:26:05
質問です。 データにフィルターをかけるとデータの最初の方が0に近い値になってしまうのですが、回避する方法はあるのでしょうか? それとも、フィルターをかけた上で最初の方を切り取った方がいいのでしょうか。 使っているフィルターは3次のバターワースフィルタです。
すみません、sageわすれましたorz
位相遅れを無くしたいならfiltfiltを使えばいい >最初の方が0に近い値になってしまう これが何か問題になるの?
957 :
デフォルトの名無しさん :2009/06/01(月) 01:44:36
2次のルンゲクッタ法のホイン法と中点法でプログラムを作っています。 xx = []; i=0; for t=0:dt:tf i=i+1; xx(:,i)=x; xt = x; for j=1:2 f = A*x + B*u; d(:,j) = f*dt; x = xt + d(:,j)*0.5; end x = xt + (d(:,1) + d(:,2))/2; end t=0:dt:tf; どこか違うとこありますか?あったら教えてください。
958 :
デフォルトの名無しさん :2009/06/01(月) 02:07:00
2次のルンゲクッタ法のホイン法と中点法でプログラムを作っています。 ホイン法 xx = []; i=0; for t=0:dt:tf i=i+1; xx(:,i)=x; xt = x; for j=1:2 f = A*x + B*u; d(:,j) = f*dt; x = xt + d(:,j); end x = xt + d(:,2); end t=0:dt:tf; 中点法 どこか違うとこありますか?あったら教えてください。
959 :
デフォルトの名無しさん :2009/06/01(月) 02:09:28
2次のルンゲクッタ法のホイン法と中点法でプログラムを作っています。 中点法 xx = []; i=0; for t=0:dt:tf i=i+1; xx(:,i)=x; xt = x; for j=1:2 f = A*x + B*u; d(:,j) = f*dt; x = xt + d(:,j)*0.5; end x = xt + d(:,2); end t=0:dt:tf; どこか違うとこありますか?あったら教えてください。
2次のルンゲクッタ法のホイン法と中点法でプログラムを作っています。 中点法 xx = []; i=0; for t=0:dt:tf i=i+1; xx(:,i)=x; xt = x; for j=1:2 f = A*x + B*u; d(:,j) = f*dt; x = xt + d(:,j)*0.5; end x = xt + d(:,2); end t=0:dt:tf; どこか違うとこありますか?あったら教えてください。
なんだこの馬鹿は
962 :
デフォルトの名無しさん :2009/06/07(日) 22:09:25
Student Editionてamazon.co.jpでも買える?
matlabにはfortrunでいうgoto文のようなものはありますでしょうか? ○○行から××行の間の処理を繰り返したいのですが、 結構な行数なので見辛くなってしまいまして。。 ご存知の方がいましたら教えて頂けると幸いです。
結論:無し ついでに書くならmatlabはループが苦手
>>964 やっぱりないですよね。。
ご回答有難うございました。
uicotrol関数のプッシュボタンやトグルボタンを 他の形(丸や多角形)にできますかね? プロパティをみるとpositionによる縦横長さを 弄る以外にはなさそうですが、何か手段はありますでしょうか?
デジタル信号の加速度時系列波形を 2階積分して変位の時系列波形を求めたいのですが、 どのように組めばいいのかがわかりません。 サンプルプログラムが載っていると 順を追えて理解がしやすいのですが、 何か参考となる本や文献があれば教えて頂きたいです。
968 :
デフォルトの名無しさん :2009/06/20(土) 15:31:18
FFTの勉強中でプログラムを実際に作ってみたんですが データ数8までは成功するのにどうしてか16以上になるとできません。 XXには既に並び替えたデータが入っています。 処理された結果がYです。 phase=log2(N); for m=1:phase W=exp(-i*2*pi/(2^m)); for n=1:N/2^m for k=1:2^(m-1) K=k+2^m*(n-1); Y(K)=XX(K)+W^(k-1)*XX(K+2^(m-1)); Y(K+2^(m-1))=XX(K)-W^(k-1)*XX(K+2^(m-1)); end end XX=Y; end
969 :
デフォルトの名無しさん :2009/06/28(日) 20:18:52
質問させてください。 matlabでImageJと同等のリニアスケールのトゥルーカラー画像を表示させたいのですが、うまくいきません。 matlabでは明度がはっきりしない画像となってしまいます。 何か良い方法があれば教えてください。
970 :
デフォルトの名無しさん :2009/07/05(日) 07:03:38
Matlabで大きな画像(1000x4000)をimagescで表示させ、saveasで保存すると、 元の画像よりも小さくなってしまいます。。 元のピクセルサイズを壊さずに保存できる方法を、 もしご存知の方がいたら教えてくださいm(_ _)m
自己解決しました;; imwrite(X, 'test.png'); のようにして解決しました。
972 :
デフォルトの名無しさん :2009/07/06(月) 21:01:14
拘束条件(壁)があるときの2自由度ロボットアームのシミュレーションをしたいのですが、 拘束条件をどのように設定したらいいのか分かりません; 漠然とした質問で申し訳ないのですが、教えていただけたら幸いです。
エスパーするとode+eventでなんとかなりそう
974 :
デフォルトの名無しさん :2009/07/07(火) 17:15:29
画像をR成分、G成分、B成分と段階的に表示するプログラムを作りたいです。 A=imread('画像のアドレス'); B=zeros(size(A,1),size(A,2),3); for(a=1:1:3) for(i=1:1:size(A,1)) for(j=1:1:size(A,2)) B(i,j,a)=A(i,j,a); B(i,j,a)=B(i,j,a)/255; end end imshow(B) end このプログラムだとimshowが三回実行されますが、 実行間隔が短いので最後の1回の結果しか確認できません。 それぞれの間に10秒ずつ時間を置きたい場合などはどうしたらよいですか?
自己解決しました。 pause(n) でn秒プログラムの実行を停止できました。
画像を読み込み、読み込んだ画像情報をファイルとして書き出す際に、 連番をファイル名に付け様と思ったのですが、上手くいきません。 write = imread('lex.jpg'); for i = 1 : 10 imwrite(write, ['file_' i '.jpg'], 'JPEG'); end 使用したのは上記のプログラムですが、imwriteのところでjpegを書き出すためのファイルが開けない、 というエラーがでます。 これを改善するにはどうすればいいのでしょうか。 よろしければ誰かご教授のほどをお願いいたします。
977 :
デフォルトの名無しさん :2009/07/24(金) 13:09:36
int2str
978 :
デフォルトの名無しさん :2009/07/24(金) 13:10:50
int2str
質問です。 A = diag([1,1,1,0,0,0]); eigs(A, 2, 'SM') とすると 警告: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 0.000000e+000. が出て、結果が NaN, NaN となります。 どう対処すればよいでしょうか? なお、実際に使いたい対象はもっとでかい素行列で、 full したくない、という事情があります。
980 :
デフォルトの名無しさん :2009/07/31(金) 12:25:08
singularでない行列を放り込むしかないんじゃね?
>>980 実際、今は入力の行列に小さな摂動を加えて
singularではないようにして回避していますが、
どうにも筋が悪いように思い、質問した次第です。