08/02/25 20:47:37
質問です!
ある画像の一部分(オブジェクト)の画素値の平均をとりたいのですが、
ラベル付けして、オブジェクトの全ピクセルの座標は取ったのですが、
for i=r(min):r(max)
for j=c(min):c(max)
heikin=mean2(Img(i,j,:));
だと、オブジェクトの形が四角ではないのでオブジェクトの外側の画素値まで
計算してしまいます。
何かいい方法がありましたら教えてください。
436:デフォルトの名無しさん
08/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
08/02/25 22:08:15
ご回答ありがとうございます。
バッチリ上手く行きました。
差しでがましいですが
もう一つ質問が…
二値化の画像にラベル付けをしてあるのですが、
ある座標を与えて、その座標を含むオブジェクトのラベル番号、
もしくはそのオブジェクトを構成している全座標を入手したいです。
[r,c] = find(bwselect(Img2,i,j));
これが僕の絞り出した答えでしたが無理でした。。
いいアイディアがありましたら教えてください。
438:435
08/02/25 22:08:54
ご回答ありがとうございます。
バッチリ上手く行きました。
差しでがましいですが
もう一つ質問が…
二値化の画像にラベル付けをしてあるのですが、
ある座標を与えて、その座標を含むオブジェクトのラベル番号、
もしくはそのオブジェクトを構成している全座標を入手したいです。
[r,c] = find(bwselect(Img2,i,j));
これが僕の絞り出した答えでしたが無理でした。。
いいアイディアがありましたら教えてください。
439:デフォルトの名無しさん
08/02/26 21:13:42
>>432
画像の読み込みをまずやってみよう
440:デフォルトの名無しさん
08/02/27 11:35:03
フルカラーを使ってのムービーを作成する際のコーデックは何がおすすめですか?
441:デフォルトの名無しさん
08/02/27 13:22:39
無圧縮AVI
後で別のソフトで変換
442:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/29 03:56:57
>>437
find関数の中は条件文じゃないと機能しないのでは?
445:デフォルトの名無しさん
08/02/29 21:13:31
>>443
ありがとうございますー、やってみます!
446:デフォルトの名無しさん
08/03/02 12:22:49
>重み係数を使う必要がある場合は、ノルムを最小にするようにしないといけないけどね。
この意味が理解できないw
447:デフォルトの名無しさん
08/03/03 17:50:26
>>446
ノルムというのは距離のこと
448:デフォルトの名無しさん
08/03/03 18:43:02
重み付き最初二乗法はどうやって記述できるの?
449:デフォルトの名無しさん
08/03/03 21:14:23
なぜmatlabスレで数式をきくんだ?
matlab への翻訳がわからないのなら数式は記述しておくとか、
数式が記述してあるページとかを示しておくべきなんじゃないのか?
数式がわからないというのはスレ違いだろ?
450:デフォルトの名無しさん
08/03/03 21:32:41
>>449
ウルサイ!
451:デフォルトの名無しさん
08/03/03 22:27:27
シミュ板の scilab のスレッドが過疎で
レスがいただけないようなので、こちらで質問させてください。
MATLAB で
( x^2 ) + ( x * y ) + ( y^2 ) = 1;
主軸が斜めになっている楕円は
どのように plot2d すればいいのでしょうか?
452:デフォルトの名無しさん
08/03/03 23:41:30
>>447
いや、そもそも変なこと書いてるのではないか?
453:デフォルトの名無しさん
08/03/04 00:26:46
あるwaveファイルにQ値、ゲインをある特定の周波数に持たせたい
(EQをかけたい)のですが、どうすればよいのでしょうか?
フィルタを使う(fdatool)ではダメですよね?
宜しくお願いします
454:デフォルトの名無しさん
08/03/05 23:19:31
>>453
ここを参考にすべし
URLリンク(www.musicdsp.org)
455:デフォルトの名無しさん
08/03/06 19:29:46
URLリンク(dl.cybernet.co.jp)
このような3次元の物体の可視化を行っているのですが、物体の表面で金属のような質感を出すにはどのように
設定したらよいのでしょうか?
456:デフォルトの名無しさん
08/03/12 16:33:14
質問させていただきます。
「MATLABによる制御系設計」という本で勉強しているんですが、
MATLABの制御系コマンドを使えるフリーソフトを探しています。
検索すると無料でScilab,Octave,Freemat,有料でMATXというのがあるようですが、
制御系コマンドを使う時、互換性が最も高いなどお勧めの
ものがあれば教えてください。
457:デフォルトの名無しさん
08/03/13 00:42:00
有料だけどMATLABっていうのがあるらしいよ
458:デフォルトの名無しさん
08/03/14 11:53:20
>>457
456
もちろんMATLABは知ってますが・・・・
研究でMATLABは使ってきたのですが、これからは
家でも勉強したいのであのような質問をしたのですが。
拙い質問と感じられたのでしたら申し訳。
459:デフォルトの名無しさん
08/03/14 12:07:50
Scilabでいいんじゃね
460:デフォルトの名無しさん
08/03/14 15:25:43
Octaveでいいんじゃね
461:デフォルトの名無しさん
08/03/14 15:54:57
Freematでいいんじゃね
462:デフォルトの名無しさん
08/03/14 21:24:08
とりあえず見つけたやつ全部自分で試して見ればいいんじゃね
463:デフォルトの名無しさん
08/03/15 00:59:47
学生ならMATLAB買え
464:デフォルトの名無しさん
08/03/15 20:20:24
>462
ごもっともだと思います。
知り合いにもそういう意見をもらったんで、
そうしてみます。とりあえず、Scilabインストールしてみました。
金銭的に厳しいのでフリーのソフトから自分なりに試して
みようと思います。
>463
それもそうですね。
MATLABをインストールできるだけお金が貯まったそうしようと思います。
4月から社会人なので。
意見ありがとうございます。
465:デフォルトの名無しさん
08/03/21 11:58:18
前の職場でmatlab使ってたけど今のところでmatlab買えない
pyrhon.numpy
と
maxima
どっちがお勧め?
466:デフォルトの名無しさん
08/03/22 02:34:39
俺的には;
python + scipy + matplotlib
467:デフォルトの名無しさん
08/03/29 04:30:27
グリッドの幅を変更したいのですがどうやって指定すればいいのでしょう?
grid minor より細かくしたいでっす。
468:デフォルトの名無しさん
08/04/08 06:19:29
Unix用Matlabで圧縮ムービーを作る方法はありませんか?
movie2aviだと非圧縮しかサポートしていないようなのですが。
469:デフォルトの名無しさん
08/04/09 21:59:10
行列の平方根を求める方法を探したら、関数「sqrtm」が使えることが分かった。
例えば、
Y = X * X;
でYが与えられたとき、解Xを求めるには、
X = sqrtm(Y);
とすればいい。
ところで、次の場合、解Xを求めるにはどうすればいいんだろう?
分かる人いる?
Y = X * X'
※ 行列はすべて複素行列で、「'」は複素共役転置を表す
470:デフォルトの名無しさん
08/04/11 16:07:05
教授から言われて、MATLABで作ったプログラムをコンパイルしています。
コンパイルは普通に通るのですが、エラーが発生する箇所が時々出ます。
エラーが出た箇所や解決法をリスト化して書いてあるサイトなどは無いのでしょうか?
今回は解決したのですが、毎度これを解決するのは難儀なので。
今回はsystem関数で
-----------------------------------------
"プログラムのフルパス" -コマンドラインオプション
-----------------------------------------
としてあったのを
-----------------------------------------
cd "プログラムのあるフォルダ"
プログラム名 -コマンドラインオプション
-----------------------------------------
としたら動きました。
471:デフォルトの名無しさん
08/04/11 18:27:55
>>470
どうでもいいが、ディレクトリをほいほい移動しちまっていいのか?
その後ファイルアクセスしてたら厄介だぞ。
472:デフォルトの名無しさん
08/04/12 15:04:33
UNIXのoctaveスレの人たちをここに誘導した方がいいのだろうか
473:デフォルトの名無しさん
08/04/12 21:48:45
お互いに行き来すればいいんじゃない?
全員誘導に従うとは思えないけど
474:470
08/04/14 12:09:08
>>471
ご指摘どうもです。
今回の場合は、外部のプログラムを1回呼び出すだけだったので問題はなかったです。
コンパイル時に動かないのは、プログラムのパスをダブルクォテーション(")で囲っているのにその後にコマンドライン引数あげている事なので…
あと、どうも他にMATLAB関連スレが見当たらないので一人事を書いておきます
・eval関数を使うとコンパイル後実行時にエラーが出る
mファイルをコンパイル時に外部mファイルが必要と判断された場合は、必要な外部mファイルは暗号化されてctfファイルにまとめられるが
eval文中で外部mファイルを
eval('foo(1);');
と呼び出すとコンパイル時に解析されないのでctfファイルに同梱されない
おそらくfevalやinline等の関数も同じ症状が出る
邪魔だったら文句言って下さい…
475:470
08/04/15 16:02:17
独り言その2
evalやfeval、inline等の関数を使うと、コンパイル後、プログラムをを実行中にエラーが出ることがある
これはMATLABに同梱されている関数でもその対象となるものがある。
その関数の中でfevalなどが使われていると、やはり同梱されない関数が出てくるため実行エラーがある
Signal Processing Toolboxのaryule 関数でそういう症状があった。
476:470
08/04/15 17:18:30
間違いがありました
aryule関数ではなく、pyulear 関数でした。
独り言その3
このようにeval関数関係でエラーが起こる場合、一番有効な方法は
ctfファイルに必要な関数を同梱させるために一度も使わない関数を書いて
function foo()
関数1();
関数2();
関数3();
とコンパイルするmファイルに追記しておくと良いと思います。
477:デフォルトの名無しさん
08/04/16 19:47:18
ムービーをQuickTime形式で保存する方法を教えてください
478:デフォルトの名無しさん
08/04/18 01:55:22
>>477
>>441
479:デフォルトの名無しさん
08/04/18 16:35:52
質問です
MATLABにおいてベクトルの要素が複素数の場合に最大値を求めると、
最大値はなぜそれが最大値だとみなされるのでしょうか?
480:デフォルトの名無しさん
08/04/18 17:45:16
長さじゃないの?
481:デフォルトの名無しさん
08/04/18 18:58:37
もうちょっと詳しくお願いできませんか?
3+iと4-3iの場合、どのように大小を決めるかということです
482:デフォルトの名無しさん
08/04/18 19:19:09
ベクトルの長さだから、sqrt( 3^2 + 1^2 ) と srqt( 4^2 + (-3)^2 )じゃないの?
483:デフォルトの名無しさん
08/04/18 19:21:55
ああなるほど、そういうことですか
親切にありがとうございました
484:デフォルトの名無しさん
08/04/18 19:43:25
matlabを使う前に中学数学を勉強しよう
485:デフォルトの名無しさん
08/04/18 22:43:32
MATLABはコンパイラがあって、それを使うとC/C++で組んだコードと同じくらいの
速さになる、と聞いたのですが本当ですか?
486:デフォルトの名無しさん
08/04/18 22:58:21
本当だよ。100万近くするけどね。研究室のを使っている。
487:デフォルトの名無しさん
08/04/18 23:06:07
>>486
ありがとうございます。友人からそのことを聞いて、いまC++を勉強してるのが無駄な感じがしてきてたのですが、
やっぱり、MATLABがそれなりにできてコンパイラもある状態なら、あたらしくC++を勉強する必要はない、という
くらいですか?実行速度で、C++で作ったコードには勝てますか?
C++で行列使うのいやなんですよね。。。それでも速度でC++の方が速いなら、やる価値はあるのかと思ってたけど、
そうじゃないならC++とはバイバイしたいス。
488:デフォルトの名無しさん
08/04/19 10:39:12
C/C++からmatlabを使って高速に動かす、という手もある。
こちらは100円も掛からない。
489:デフォルトの名無しさん
08/04/20 11:28:41
>>488
MATLABの関数を外部ライブラリみたいにつかうということですか?
490:デフォルトの名無しさん
08/04/20 21:43:48
uicontrol('style','text','string','TEST')
など、GUIで文字を入力した図をeps形式で保存しました。
これをillustratorで開くと、入力した文字が図形オブジェクトとして認識されてしまいます。
illustrator内で、文字オブジェクトとして認識させる方法はないのでしょうか?
491:デフォルトの名無しさん
08/04/21 19:15:01
movie2aviを実行すると
エラー: ==> avifile.addframe>ValidateFrame
Frame must be 440 by 439.
というエラーが出ます。ウインドウのサイズが問題なのだと思うのですが、
movie2aviコマンドに適切なウインドウサイズをプログラムで指定できませんか?
492:デフォルトの名無しさん
08/04/22 18:29:05
2つの変数を数十万通り、方程式に代入して解を求めたいのですが、Matlabのプログラムで可能でしょうか?
可能でしたら、具体的にどのようにすれば求めればいいでしょうか?
(Mathematica、Maple、C言語など、他のソフトも使える環境にあります。Matlabより向いているソフトがあれば教えてください。
ちなみにソフトは苦手で、どれもにわかです。)
493:デフォルトの名無しさん
08/04/22 18:38:15
数十万だろうが一つだろうが本質的にはかわらんよ。方程式は非線形なの線形なの?
494:デフォルトの名無しさん
08/04/22 19:00:07
非線形です。
方程式は、今ある状態ではニュートン・ラプソン法等で近似を行う必要があり、計算が膨大になりそうなので
ある程度n、簡略化を行おうと努力してるところです。
一応、線形にできる可能性もないこともないと思います。
知りたいのは、何十万通りの2つの変数を外部データから読み込んで計算するのにMatlabは適しているのか、ということです。
495:デフォルトの名無しさん
08/04/22 23:27:30
質問です
rootsを使って多項式の解を求めるとき、
f(z) = z^-2 +9 のように逆数になってる場合どうすればいいのでしょうか?
また複素数面上に極座標表示するにはどれを使えばいいでしょうか?
496:デフォルトの名無しさん
08/04/23 15:09:13
>>494
本当に何十万通りやらなければいけないのか、考えてみることが必要かと。
プログラム自体は何パターンでも計算可能
497:デフォルトの名無しさん
08/04/23 16:11:36
二つの変数を取る、その問題に最適化されたプログラムを自分の手で書いたほうがいいと思うんだが
498:デフォルトの名無しさん
08/04/23 22:31:07
画像処理のテンプレートマッチングで、xcorrを利用している人いますか?
xcorrは、相互相関係数を計算する関数だそうですが、
URLリンク(dl.cybernet.co.jp)
を読んでもよくわからないです。
マッチングする領域の画素データをx、yとすると、xcorr(x,y)はひとつの値になると
思うんですが、行列で出てくるみたいです。
xcorrをどうやって使うか、教えてください。
499:デフォルトの名無しさん
08/04/23 23:15:42
xcorrに限らず、配列がマトリックスの場合、それぞれの縦ベクトルで別々に計算するというルールがあるの。sumとかmeanとか。
だから、これを一本の縦ベクトルにしてからぶち込んだらいい。
あとは自分で調べてね。
ここ基本だからね。
500:デフォルトの名無しさん
08/04/24 00:49:17
>>498
ん?なんで cross correlation がひとつの値になるんだ?
語弊を恐れず書くと cross correlation は convolution みたいなもんなんだから、|N1| + |N2| -1 の長さになるだろう?
あと、2次元データなら2次元拡張 xcorr2 がある。
501:デフォルトの名無しさん
08/04/25 05:27:21
matlab買えないのでRにした
octaveっていま一つ
502:デフォルトの名無しさん
08/04/25 07:11:58
>>498
相互相関から勉強しよう
503:デフォルトの名無しさん
08/04/25 08:58:45
とういうか単に相関corrを使いたいだけなんじゃないの?
504:デフォルトの名無しさん
08/04/25 23:04:45
PC変更したらアクチベーションは2台までらしく
アクチベーションできなくなって
PC移行時は問い合わせろと書いてあったので
米・日両方問い合わせるも反応ナッシングな俺はどうしたらいいですか。
Studentの2007年版デス。
505:デフォルトの名無しさん
08/04/25 23:50:13
積分が行われる様子を可視化することは可能でしょうか?
球の表面積を面積要素で表したいのですが。
506:デフォルトの名無しさん
08/04/28 20:05:28
>>504
土日だからじゃないの?
もう返事きたでしょ?
507:デフォルトの名無しさん
08/04/28 20:20:57
>>506
来ました
Machine IDの変更申請をしろとな
508:デフォルトの名無しさん
08/04/29 19:03:34
ウインドウを表示せずにアニメーションを作成する方法を教えてください。
509:デフォルトの名無しさん
08/05/01 07:23:38
MATLABで
A=atan(imag(B)./(real(B));
と位相応答を求めた後、群遅延を求めるにはどうしたらよいでしょうか?
上式を周波数で微分したらよいと思うのですが・・・
やり方がわかりません・・・
510:デフォルトの名無しさん
08/05/01 15:35:44
すみません。スレ違いだったらスマソ
友達がPCに詳しい自分にmatlabを使えるPCはどれがいいかと聞いてきたんですが、自分はこのソフトについて一切知らないのが現状です。
みなさんがmatlabを快適に使う環境とはどのようなものなのでしょうか?
よろしくお願いします
511:デフォルトの名無しさん
08/05/01 15:54:45
>>510
matlabを快適に使うとなればメモリは8GBくらい欲しいし、となれば64bitLinuxをWoodcrestXeonで動かせばいいかな。
matlabだけならCPUはDualCore一個でいいんじゃない? ディスクはできればRAIDを組むとして、HPのProliant辺りでどうでしょ。
512:510
08/05/01 18:20:43
>>511さん
メモリ4GBに64bitは自分のメインマシンですがそれでも足りないんですねw
すみません。言い方を間違えたようです。
とりあえずコスト10万ぐらいのレベルで考えたときどのような構成にすればよいでしょうか?
>>511さんのレスからするとメモリは多めでCPUはdual coreぐらいでも問題ないと。
ぜんぜん理解していなくて申し訳ないのですがmatlabは大容量のデータをいじることにポイントを絞り、それに伴うCPUがあればいい感じですか?
どうぞよろしくお願いします
513:デフォルトの名無しさん
08/05/01 21:49:18
そりゃあんた、>510の友達がmatlabをどう使うのか判らんから判らんがな。
514:デフォルトの名無しさん
08/05/02 11:03:03
>> 486
MATLABにコンパイラがあるのは本当。C++のコードに一度変換してコンパイルしている。
で、間違いのほうなんだけどある程度高速にはなるけどPureなC++でマシなコードを書いたほうが断然早い。
私の場合画像処理ライブラリ関係でお世話になったけど3割程度しか高速化しなかった。
ちなみにMATLAB7.1環境。
515:470
08/05/02 11:09:36
>>510
私は研究室のノートPCに入れて使っているけどストレスを感じませんよ。
余程に型落ちなPC(1G以下のCPU)でもない限りOSの推奨スペック程度あれば基本的には大丈夫かと。
スペックはあるに越したことはないけど、必要かどうかは、何の研究をやるかによる
計算量が爆発するようなアルゴリズムが必要な分野でないなら気にしなくて良い。
516:matlab初心者
08/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初心者
08/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
08/05/02 11:26:34
まぁ>511は極端な例だけど、matlabで「待つ」ような処理をさせるのであれば2coreは欲しいね。
メモリはあるに越したことはないけど何の計算をするか次第かな。
ってことで、普通にCore2duoのPCを(メモリとディスクをけちらずに)組めばいいんじゃね?
GPUをNVIDIAの8800GT辺りにしておいて、CUDAを使ったライブラリを使える可能性を視野に入れてもいいし。
519:デフォルトの名無しさん
08/05/02 11:47:46
>>518
MATLABって、まだマルチCPUに完全に対応していなかったような気がするのだが、
どのバージョンから対応したのか教えてくれないか?
520:511
08/05/02 11:56:31
いや、matlabの結果を待っている間、他の作業もできるようにってこと。
matlab自身が対応しているかどうかが理由じゃないよ。
まぁ、Pen4でmatlab動かしてる間にデータの整理しようと思ったら結構かったるかったんでね。
521:デフォルトの名無しさん
08/05/02 12:05:29
>>517
1)slider1 をグローバル変数にするのが一番早いような木がする。
2)荒技だけど、handlesの構造体に変数を勝手に付け加えてそこに書き込むと言う手もある。
handles.slider1 = xxxx;
522:matlab初心者
08/05/02 12:28:59
>>521
早速のご返答ありがとうございます!
複雑さを避けるために2)を試してみます。
523:517
08/05/02 12:54:41
>>521
handles.slider1 = get(hObject,'Value');
としたのですが、他の関数のmファイルで、
handlesを参照する方法がわかりません。。。
たびたびすみませんが、ご教授下さい。
524:517
08/05/02 21:20:46
自力で解決しました。ありがとうございました。
525:509
08/05/07 18:52:59
もう一度書きこみさせてください
位相特性を周波数で微分して、群遅延を求めたいのですが
「周波数で微分する」の部分をどう書けばいいのかわかりません
位相特性は求めることができているのですが・・・
どなたか助けてください
お願いします
526:デフォルトの名無しさん
08/05/07 21:51:36
位相特性が周波数なのでそれを微分する
527:デフォルトの名無しさん
08/05/09 00:24:39
この春から、学生はMATLABが18900円で買える件。
アップデートは無しだが、そこそこToolboxも付いてるし使えそうよ。
528:デフォルトの名無しさん
08/05/09 09:59:58
開いてみるまでPICのスレだと思ってた事はヒミツです
529:18
08/05/10 14:39:49
>>527
まだ届いてないけど注文しますた。
社会人になってからも株のシミュレーションで使えるし迷わず購入
530:デフォルトの名無しさん
08/05/10 17:41:36
以前に購入したMATLAB 2006b 学生版を新しく買う予定のPCに入れようと思っています。
OSがビスタなのですが、インストールできますでしょうか。
サイバネットのホームページを見ても分かりませんでした(探し方が甘いかもしれませんが)。
親切な方、教えてください。
531:デフォルトの名無しさん
08/05/10 18:25:33
InternetArchiveから2006年のFAQを一通り見てみたけど、vistaに関する記述はないな。
532:デフォルトの名無しさん
08/05/11 00:45:16
>>530
以下、僕の経験則だけど。
6.x はライセンスマネージャが Vista に対応していないのでインストールできない。
メインバージョンが 7 になって以降は問題なくインストールできてる。
従って、学生版でも R2006b なら問題なくインストールできると思われ。
余談だけど Vista で 6.x を動作させたい場合は
VMware や Virtual PC を wrapper にしてる。
533:デフォルトの名無しさん
08/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を使うことは可能なのでしょうか。
その設定は素人が手を出さないほうが良い内容でしょうか。
もし手を出してよさそうなのであれば、どのあたりを調べれば使い方が習得できますでしょうか。
聞いてばかりですみませんがよろしくお願いします。
534:デフォルトの名無しさん
08/05/11 15:22:38
>>532
>VMware や Virtual PC を wrapper にしてる。
速度はあんまり落ちないってこと?
535:532
08/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 でもストレスなく使えてる。
まぁ試してみるのがよいよね。
536:デフォルトの名無しさん
08/05/12 01:11:17
MATLABとIDLってどっちが実行速度速いですか?
537:デフォルトの名無しさん
08/05/12 20:57:57
MATLAB学生版、科研費(学振)で買えるそうですよ。
と報告。
538:デフォルトの名無しさん
08/05/13 04:39:49
>>537
どうやって?
HP見ても学生個人が買わないといけないって書いてあるけど。
539:デフォルトの名無しさん
08/05/13 09:04:40
学振だったらいいんじゃないのかな?
540:デフォルトの名無しさん
08/05/13 23:59:45
ぐぐっても探せなかったので質問させてください。
OSのコマンドプロンプトから直接Matlabスクリプトは叩けないのでしょうか?
自分の調べた限りでは、みんなMatlabを立ち上げて、Matlabコマンドプロンプトからの
実行ですた。
CGIとかでWebからMatlabを動かせたらステキだと思ったので。
やっぱりMatlabを立ち上げないとムリなのでしょうか。
541:デフォルトの名無しさん
08/05/14 02:39:55
>>540
matlab -r foo.m
542:デフォルトの名無しさん
08/05/14 16:56:38
大学の講義でMATLABを使って、非線形方程式を自分で考えて解けという講義内容だったのですが、MATLABの使い方が全くわからないので誰か助けてください。
543:デフォルトの名無しさん
08/05/14 18:18:09
いいよ
544:デフォルトの名無しさん
08/05/14 20:19:57
>> 541
ありがとうございました!!
教えてもらったものを元に、いろいろやってみたら、できました!
545:デフォルトの名無しさん
08/05/15 21:14:21
>>537
それは問題になると思うよ。
546:デフォルトの名無しさん
08/05/17 17:29:31
MATLABで作った図をイラレで使いたいのですが
どうすればいいのでしょうか?
547:デフォルトの名無しさん
08/05/17 18:12:44
>>546
ファイル→エクスポート→ベクタを保持できるファイル形式(epsやemf)で保存
→おもむろにillustratorで開く
コマンドラインから画像を保存する場合はprint命令を使う
これでいいかい
548:デフォルトの名無しさん
08/05/18 10:49:36
>>547
フォントとか座標軸とか、勝手に書き換えられるのではないか?
549:デフォルトの名無しさん
08/05/18 23:22:09
matlabでオブジェクト指向プログラミングをしたいのですが,
どなたか勉強に良いサイトを教えていただけませんか?
550:549
08/05/19 23:26:55
URLリンク(www.mathworks.com)
本家のサイトが意外によかったようです.
自己解決しました.
551:デフォルトの名無しさん
08/05/20 12:15:27
フーリエ変換のグラフで横軸がタイムフレーム、縦軸が周波数binで値が大きいほど濃いグラフ書きたいんですがどんな関数使えばいいでしょうか?
552:124
08/05/21 11:36:23
初歩的な質問で申し訳ないんですが、
matlabを開いた時に開かれるcurrent directoryの
初期フォルダを変更することって可能でしょうか?
わかる方いましたらよろしくお願いします。
553:デフォルトの名無しさん
08/05/21 13:01:07
matlab のショートカットアイコンを作っといて
そのプロパティの作業フォルダを変えるとか。
もしくは startup.m を作って cd(foo); とか。
554:デフォルトの名無しさん
08/05/21 22:18:05
ショートカットアイコンってなんですか?
555:デフォルトの名無しさん
08/05/22 01:41:05
その質問は、もう質問の体をした荒らしみたいなもの。
google もまともに使えんのに matlab で何をするつもりなのか、答え給え。
ぼくぁいつもマジレスなんだ。
556:デフォルトの名無しさん
08/05/22 14:24:57
たいしたことじゃないんですが、
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];
のようにしているのだけれど、別になんでもいいです。
557:デフォルトの名無しさん
08/05/22 17:36:53
伝達関数からステップ入力に対する
オーバーシュートや静定時間を求める関数ってありますか?
558:デフォルトの名無しさん
08/05/22 21:12:07
>>556
aを、微分(差分)してみるといいかもしれない
559:デフォルトの名無しさん
08/05/22 23:42:58
>>558
おぉおもしろいアイデアだ。
D = conv(a, [1 -1]);
starts = find(D == 1);
ends = find(D == -1) -1;
ind = [starts(:) ends(:)];
でいけました。うほっ。とんくそ。
560:デフォルトの名無しさん
08/05/23 22:01:47
>>557
stepinfo
ただしR2006a以上のControl System Toolbox
561:デフォルトの名無しさん
08/05/28 20:12:10
>>560
ありがとうございます。でもうちのじゃ使えなかったみたいです。
あきらめます。
562:デフォルトの名無しさん
08/05/29 19:44:51
過去にMATLABにLISPのmap関数の様なものがあるかと質問したものです.
その後,mexを作って解決しましたが,MATLABには標準で,arrayfunやcellfunといった同様の関数があることが分かりましたので一応報告しておきます.
563:デフォルトの名無しさん
08/05/30 03:32:38
ちゃんと聞けば教えてあげたのに。
564:デフォルトの名無しさん
08/05/30 14:18:05
すいません.コンソールで値の入力を要求して,その結果を変数に代入するような文はどう書くのでしょうか?
Please imput value of x :
と表示させてxの値を入力させたいのです.
565:デフォルトの名無しさん
08/05/30 14:18:29
inputですた
566:デフォルトの名無しさん
08/05/30 22:32:32
すいません.自己解決しました.
567:デフォルトの名無しさん
08/06/01 21:22:19
図をepsで保存してイラレで読み込むと
マイナスが見えなくなるのですが
これってどうしたらいいのですか?
568:デフォルトの名無しさん
08/06/03 14:59:19
feval(fnc,r)
でfncに'sin'とかは入れてsin(r)を計算できるのですが、
x^2などのxにrを入れて計算するのはどうすればいいですか。
569:デフォルトの名無しさん
08/06/03 17:23:50
>>568
feval(@(x) x^2, r)
570:デフォルトの名無しさん
08/06/04 18:58:14
matlabで多目的整数計画問題って解けるんですか?
fminimax()の変数が整数版みたいなやつが欲しいんです。
fminimax()の条件をいじって、変数を整数に縛ろうと思ったんですけど、
やり方もわかりませんし・・・
571:デフォルトの名無しさん
08/06/04 21:26:37
縦軸の値から横軸の値を表示することはできますか?
たとえば、y=2xのグラフをxを1~10まで0.1刻みで描いたとします。
そのとき、y=5のときのx値を知りたいわけです。
刻み幅が大きく合致する値がない場合はどうなるのでしょう?
572:デフォルトの名無しさん
08/06/04 21:40:04
>>571
interp1dをつかったら?
573:デフォルトの名無しさん
08/06/04 23:27:43
>>571
推定するしかねーだべが。
574:デフォルトの名無しさん
08/06/05 02:21:50
matlabの関数の説明が日本語で書かれているサイトないでしょうか?
できればURL張ってくださいorz
575:デフォルトの名無しさん
08/06/05 23:35:26
matlab の中の人たちって何者?
特に toolbox とか数学的に難しいものもあるから、
それを実装できる知識を持っているが、
研究者やらずに matlab 開発しているとか良くわからない。
ph.d 持ちの人たちなのかな?
576:デフォルトの名無しさん
08/06/06 19:13:20
大丈夫、私も数学的知識はないけど数学関数の実装は(数学屋に書いてもらったアルゴリズムに基づいて)行っている。
577:デフォルトの名無しさん
08/06/07 17:31:53
>>574
「MATLAB ヘルプ」でぐぐれ
578:デフォルトの名無しさん
08/06/13 02:40:44
>>575
「MATLAB ヘルプ」でぐぐれ
579:デフォルトの名無しさん
08/06/13 14:51:55
Unix版とWin版で何か、違いはありますか?
580:デフォルトの名無しさん
08/06/16 09:27:12
変わんない
581:デフォルトの名無しさん
08/06/16 20:48:40
「MATLAB ヘルプ」でぐぐれ
582:デフォルトの名無しさん
08/06/25 20:53:55
配列のindexing をC/C++みたいに 0 始まりにすることってできますか?
583:デフォルトの名無しさん
08/06/26 10:32:35
「MATLAB ヘルプ」でぐぐれ
584:デフォルトの名無しさん
08/06/26 19:17:32
>>583
お前は首くくれ
585:デフォルトの名無しさん
08/06/26 21:14:55
>>582
できないと思う
586:デフォルトの名無しさん
08/06/26 22:06:29
>>584
カレーはククレ
587:デフォルトの名無しさん
08/06/27 08:35:39
金かけたくないなら、pylabいいよ
588:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/07/01 06:45:02
xaとyの数が違うんじゃないの?
plot2d(xa,y(1:length(x) ...
にしたら?
590:しっとり
08/07/04 17:42:43
突然すいません。
MATLABでLeonhardの軌跡ってどのように描けますか?教えて下さい。
591:デフォルトの名無しさん
08/07/04 18:01:39
こんにちはいきなりですが質問です。
例えば100行100列のランダムな値をもつ行列から上位30点の要素を抽出するにはどうしたらいいでしょうか?
誰か教えてください
592:デフォルトの名無しさん
08/07/04 20:23:06
a=rand(100:100);
b=create_set(a);
c=b(length(b)-29:end)
593:デフォルトの名無しさん
08/07/05 10:59:13
>>592
素早い回答ありがとうございます
早速やってみます
594:デフォルトの名無しさん
08/07/07 04:26:21
質問です 次のようなアプリを作りたいのですがMATLABを使い始めて日が浅いので見当がつきません、
作り方・コードを教えて下さい お願いします。
フォルダの中に「PC」等の2文字が書かれたbmp画像がN枚ある
一枚一枚を任意の場所で左右にカットする(PとCが分かれるように自分で分ける線の位置を決める)
それぞれ○○○○○L.bmp ○○○○○R.bmpとリネームして同じフォルダに保存する
この作業をN回繰りかえし終了
図:URLリンク(www.dotup.org)
595:デフォルトの名無しさん
08/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
08/07/08 00:29:39
>>595
ありがとうございます
>>問題は、分割位置が固定されているのか、問題毎に違うのか…。
画像ごとに違う位置で分割したいので分割位置を一枚一枚その度に自分で決めれるようにしたいのです
説明が分かりにくかったかもしれません、↓実際のファイル内はこのような感じです
URLリンク(www.dotup.org)
これをそれぞれ「退」と「院」に分割して保存したいのです
しかし画像によって分ける位置が違うので手動で分割位置を決めれれば…と思っています
>>% 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} ); % 画像の読み込み
597:デフォルトの名無しさん
08/07/08 07:31:40
コード中で.pngとファイル名を指定しておきながら.bmp画像しか用意してなかったんだろ
そのまま実行するという暴挙に出てエラーが出ましたとか言ってしまう神経が以下略だぜ
598:596
08/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
08/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:デフォルトの名無しさん
08/07/10 13:22:44
アルゴリズムを考えることが
レポートの課題なり、研究のポイントなんだから、
そこまでここで教えてもらおうなんて思わないように。
601:今風若者気質
08/07/10 13:56:22
>>600
何言ってるんですか、レポートにしろ卒研にしろ、抜ける手は抜くのが一番じゃないですか。
602:デフォルトの名無しさん
08/07/10 14:20:33
勉強するために大学行くんだろ。
就職のためなら専門学校いけよ。
603:デフォルトの名無しさん
08/07/10 14:26:22
頭は使わないと劣化していくよ
教授を見ていれば分かるだろ
604:今風若者気質
08/07/10 17:38:02
>>602
何言ってるんですか、専門学校の就職率なんてカスですよ。
605:595
08/07/11 12:51:43
URLリンク(uproda11.2ch-library.com)
あぷろだ初めて使うんだけどこれでいいのかな?
pass:1111
削除キー:1111
使い方
・samplesフォルダに全ての画像を移す
・imageselect.mをmatlabから起動
・開始ボタンを押した後、画像の分割位置をクリックで選択
見た目に良く分からないかもしれないけどちゃんと分割された画像が保存されています。
手抜き仕事なのでバグあったら頑張れ
606:デフォルトの名無しさん
08/07/11 21:26:56
>>605
おまえさんのアホさに感動を覚える
607:605
08/07/14 13:46:22
あっはっは、出来が酷いのは手抜き中の手抜きだから勘弁してやってください。まぁ、赤の他人に対しては良くやったよね…
ってそういう意味じゃないか…
一応やっている分野の近い相手なので、何となく情が働きまして…
matlabのGUIプログラミングはVBなどと比べても決して難しい物ではないけれど、あのレベルで習得させてやらせるのは辛いしね
608:デフォルトの名無しさん
08/07/15 08:28:19
GUIにせずとも、マウス入力で区域指定できるのではないかと
609:デフォルトの名無しさん
08/07/15 23:33:57
filter関数がC言語でかけねぇ。
誰か作ってないかなぁ
610:デフォルトの名無しさん
08/07/16 00:42:37
どんなフィルター?平滑化なんかの2次元フィルターってこと?
611:デフォルトの名無しさん
08/07/16 02:46:42
matlab の filter 関数でしょ。
612:デフォルトの名無しさん
08/07/16 07:39:55
そうそう。matlabのbutter関数で係数を求めておいて、
それをつかってfilter(b,a,signal)って使うことのできる関数を
Cで作りたいわけ
613:デフォルトの名無しさん
08/07/16 10:06:30
簡単じゃん。
614:デフォルトの名無しさん
08/07/24 05:49:41
matlab での代表的なコーディング規約ってないの?
built-in 関数みてると大文字はおろか _ すら使ってないのがほとんどな気がするんだけど、そういうもん?
ちょっと、これじゃやりにくい。
615:デフォルトの名無しさん
08/07/24 06:52:25
昔のFORTRANの流れを汲んでるから、ひょっとすると関数名は6文字までだったりしてね。
個人的には _ を使った関数名は自作関数というぐあいに区別しているけど。
616:デフォルトの名無しさん
08/07/24 18:29:52
MATLAB(R2008a)で関数自体の引数の数を得る方法はありますか?
無名関数を引数としてその無名関数自体の引数の数を返す関数を作りたいのですが。
また,関数自体はまだオブジェクト化されていないのでしょうか?
その様なクラスも見当たらないですし。
617:デフォルトの名無しさん
08/07/24 21:09:47
関数自体ってどういう意味?引数の数はnarginだろ普通
618:デフォルトの名無しさん
08/07/24 21:44:37
>>617
>引数の数はnarginだろ普通
それはある関数呼び出しに関する引数の数だろ。
URLリンク(phpspot.org)
これで分かるかな?
619:デフォルトの名無しさん
08/07/24 23:09:42
無理じゃね?
matlab は数値演算はいいけど、そういう補助機能が弱いよな。
>関数自体はまだオブジェクト化されていないのでしょうか?
そんなことする気あるの?なんかで言ってた?
620:デフォルトの名無しさん
08/07/25 02:27:23
というか、MATLABをプログラム言語としてみるとこれ以上ダサい文法の言語は正直無いと言えると思う。
最初に行列を格好良く計算できる機構と入れたのは良いけど、やっぱり後で条件分岐やループが必要だと入れたあたりから破綻が始まっている
そこからは無計画と言うしかない文法の拡張が行われている
比較的最初に気づくものでも
関数作りたかったら別にmファイルを作ってそこに書かないといけないとか
関数は最後にendで括っても括らなくても良いとか
何故か決して使いやすいとは言えない関数名がC言語風とか
行列計算の書式しか無かった頃だけ直感的で利点があった、何故かインデックスが1から始まるとか
正直、簡潔な書式の行列計算+強力なplot機能+インタプリタですぐ結果が見える使いやすさなのだと思う
本当は文法関係は言語の進化に合わせて再設計が必要な時に来ているのだと思う。もう無理だけど…。
>>614
mlint関数で文法チェックとかどうでしょう?
621:デフォルトの名無しさん
08/07/26 17:50:46
スライドバーのコールバックで処理するとき、
ドラッグが終わってバーの位置が確定した時だけ処理を行うことはできないでしょうか?
バーが変化するごとにいちいち変化してると重いですorz
622:デフォルトの名無しさん
08/07/29 12:20:46
>>621
アルゴリズムの問題だと思う。
ちょっと考え直したら?
623:MATLAB初心者
08/07/30 00:02:55
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次微分
624:デフォルトの名無しさん
08/07/30 02:42:36
宿題ぐらい自分でやろうぜ
つーか、ほとんどmatlab関係なくね?
625:デフォルトの名無しさん
08/07/30 03:43:34
FORTRANならわかるの?なのに matlab だとわからないの?
626:デフォルトの名無しさん
08/07/30 12:54:20
アルゴリズムが分からないのなら
教科書を読め
627:デフォルトの名無しさん
08/07/30 23:23:53
matlab の関数名、変数名は lower_case
のように小文字と _ を使っている人が多いようだけど、
なにか理由があるのかね?
なんとなくそういうスタイルのテキスト多いのかな?
URLリンク(datatool.com)
の人は変数名には lowerCamel を押しているようなんだけど。
#関数名は _ もなしの lowercase 押してるけど、これはないよな。よみづらい。
628:デフォルトの名無しさん
08/07/30 23:45:26
matlab を起動すると勝手に IME が日本語入力モードになります。
matlab で日本語入力モードになる意味がわからないので、
止めたいのですが、何か手法はあるのでしょうか?
629:デフォルトの名無しさん
08/07/31 11:09:24
ここのスレ、性格悪い低脳多いな。
630:デフォルトの名無しさん
08/07/31 13:49:10
>>627
空白をあらわすのにlower caseを使う人がアメリカ流の人には多いと思う
631:デフォルトの名無しさん
08/07/31 23:33:08
matlabのmファイルからwavをsound関数を使って再生しているのだけど、
途中で止めることができない(;_;)。
途中で止めることはできないのでしょうか?
コードは以下
[y, Fs] = wavread('test.wav');
sound(y, Fs);
632:デフォルトの名無しさん
08/08/01 05:27:56
>>630
lower_case と lowerCamel どっちがいいかなぁ・・・
lower_case は古い流行な気がしないでもないんですよね。
UNIX というか GNU C コーディングスタイル的な。
633:デフォルトの名無しさん
08/08/02 07:11:06
>>631
最初から止めたい位置がわかっているのなら、
マトリックスの部分指定。
とにかく止めたいのなら、CTRL+C
634:デフォルトの名無しさん
08/08/02 17:41:28
>>632
JavaScriptなんかの場合は最初は自分で書いたライブラリは_で区切るなんて風習もあったけど
そのうちライブラリを自分で配る人達が出てきてそれが普及してからはlowerCamelとJavaScriptの言語の標準に従う様になった。
最初は遊びで書いた関数も、そのうち人に配る可能性が無いわけでもないし、MATLAB標準に黙って従うのが一応正しい姿勢となるのでは?
635:デフォルトの名無しさん
08/08/02 17:43:38
MATLABの大文字小文字の区別って、完全に可能なんだっけ?
636:デフォルトの名無しさん
08/08/03 05:07:36
>>634
でも、matlab 標準というと、例えば bankrupt company が
bkrptcmpny みたいなかんじじゃない?
これはひどいでしょ?実際は、ここまでひどくはないけど、
_ もなにもないし、まぁひどい。
>>635
ファイル名 == 関数名、だから windows では大文字小文字が区別つかない。
けど、pca という関数がある時に、Pca を作るようなセンスの人はいないだろぉと思うし、
このために、lowerCamel は絶対ダメ!っていうのはもったいない気がする。
637:デフォルトの名無しさん
08/08/03 05:18:56
>>634,635
で、 toolbox 作っている人をみると、関数名は、
lower_case みたいに書いている人が多いので、そちらが標準かと思ったら、
URLリンク(www.mathworks.com)
を見ると関数名が makeParabola みたいに lowerCamel になってたりするんだよね。
でも、やっぱりファイル名の問題で、lower_case にしようかと思ったとすると、
変数名も lower_case にしたくなってくるわけだけど、
URLリンク(www.mathworks.com)
とかみると変数名は lowerCamel だったりするんだよね。
今、リンクないけど、lower_case な関数名、変数名を使っているマニュアル例もあった。
というわけで、matlab 標準がどっちつかずなもんで、むきーという状況。
638:デフォルトの名無しさん
08/08/03 05:29:17
なんだか長くなって申し訳ないけど、
C も標準は、略称使いの _ もなしの lowercase と思っていいいと思うけど、
OpenCV とか OpenGL は lowerCamel を使っている。
個人的には lowerCamel を使いたいのだけれど、
ファイル名 == 関数名の所で悩んでいる。
関数名は lower_case のような形で書いて、変数名は lowerCamel
ってアリなセンスなのかな?
ところで、private 関数的なネスト関数の名前は最初に _ でも付けようか、
と思ったら matlab では変数、関数名の最初を _ にはできないのね。がっかり。
639:デフォルトの名無しさん
08/08/05 05:03:28
お前プログラム書くの遅いだろ
640:デフォルトの名無しさん
08/08/05 13:46:17
>というわけで、matlab 標準がどっちつかずなもんで、むきーという状況。
で、個人的意見なのですが、基本的にはMATLABのユーザーは物理系の人で、プログラミングの専門家やほかの言語に詳しい人は少ないのでそういうリテラシは少し低めなのではないでしょうか?
OpenCV とか OpenGLとかはC++の文化を意識してああいう風になっているんでしょうねぇ
オブジェクト指向を基本的には出来ないとはいえ、一応matlabの関数名の文化は、Cからの影響なのを考えるとlowerCamelの記法は可なのではないでしょうか?
> ところで、private 関数的なネスト関数
Lispでは「高階関数」と呼んでいるのでこれに合わせると良いのでは?
641:デフォルトの名無しさん
08/08/05 21:59:29
>>640
>lowerCamelの記法は可なのではないでしょうか?
やっぱり問題は関数名なんだよね
>Lispでは「高階関数」と呼んでいるので
高階関数ってラムダ関数ちゅうか関数ポインタを受け取ったり
返したりって関数でしょ?fminsearch みたいな。
ネスト関数ってのはこっちね。
URLリンク(www.mathworks.com)
642:デフォルトの名無しさん
08/08/06 11:40:35
速く走らせるには工夫が要るけど
それほど大きなパッケージを作るわけでもなかったら、
書法は気にしなくてもいいのでは、って思う。
おれはそのレベルのユーザー。
643:デフォルトの名無しさん
08/08/07 02:02:31
z = (2*cos(x.)+1)(2*cos(y.)+1)
のグラフを書きたいのですが、上記の式で
エラー: 一致していないか、予期せぬ括弧か大括弧です。
とでます。x,yの値は
x=-3:0.1:3;
y=-3:0.1:3;
このように設定しております。
どなたか教えてください。
644:デフォルトの名無しさん
08/08/07 02:35:46
すみません。.の意味を取り違えてました。
645:デフォルトの名無しさん
08/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行目にどうやっても忠告がでてしまいます。
文法うんぬん以前に考え方自体が間違ってるのでしょうか?
646:デフォルトの名無しさん
08/08/07 12:28:00
こんなシンプルなのに考え方もなんも無いって。単純に文法の問題。
「こう書けるだろう」と勘で書いたところがあるでしょ?
そういうところが本当に正しいかどうかチェックしてけばいい。
help strings
647:デフォルトの名無しさん
08/08/07 12:55:00
やっぱりそうですよね。
プログラム自体が始めてから数週間なのでグダグダです。
ありがとうございました
648:デフォルトの名無しさん
08/08/07 15:07:13
アイディアとしてはいい線いっているので、
あと少しだけ、知れば、サクサク作業できるようになると思う。
649:デフォルトの名無しさん
08/08/07 20:58:54
すいません、ぐぐっても情報が少なすぎたので質問させてください。
JMatLinkというJAVAとMatlabをつなげるツールをインストールしたいのですが、
URLリンク(www.held-mueller.de)
に書いてある通りにしても上手くいきません。
上のリンク先に書いてあるように,
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:デフォルトの名無しさん
08/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-ファンクションチュートリアル
(URLリンク(www.cybernet.co.jp))
の、「5.1 既存Cコードの利用」に、
1. C MEX S-Function 内で外部関数のextern 宣言を行う。
2. コンパイル時に外部ファイルもコンパイルする
とあったので、1.のみ行って、なんとかビルドはできたのですが、まだ同じ
エラーメッセージが出ます。
やはり2.もしないといけないようなのですが、VC++で外部関数も一緒にコンパイルする
方法が、わかりません。
上記のマニュアルに書いてある方法は、Matlabコマンドラインからの
すごく単純な構成のもののコンパイルなので、今やろうとしている、
たくさんのヘッダファイルやらdllやらをリンクしているモジュールの
コンパイルは、とても難しそうです。
651:デフォルトの名無しさん
08/08/07 23:25:33
>>647
>>646に書いてあるように help strings すれば
必要なことが書いてるよ。
MATLABはちょっとクセがあるから他の言語を知ってる人が
いろいろひっかかるポイントがあると思うけど
ヘルプはけっこうちゃんとしてると思うから
どんどんヘルプ読んでいけばすぐ覚えるよ。
652:デフォルトの名無しさん
08/08/07 23:34:38
>>616
ezplotとかだと関数じたいを引数として渡してるよね。
無名関数が可能なのかは知らない(たぶん出来ない)。
653:デフォルトの名無しさん
08/08/07 23:50:55
help function_handle
654:デフォルトの名無しさん
08/08/08 01:53:14
無名関数は知ってるけど、
その引数の数を調べられないか?ってのが大事なんじゃろ。
で、matlabの引数って
function hoge(a,b,c)
と書いてあっても
hoge(a,b,c,d)
と呼べるっちゃよべるし、呼び出しの時点になるまでわからないのでは富田
655:デフォルトの名無しさん
08/08/08 03:24:53
matlab.exe のオプションってどう見るの?
--help でも matlab 起動するし。
656:デフォルトの名無しさん
08/08/08 06:02:13
>>654
>>652に答えてるのにお前が知ってたらなんなんだよ。。
だいたい呼び出しの時点の引数の数を呼び出す前に知る方法があるわけないし。
何言ってるのかわからんが。
>>616で書いてるのは定義にある引数の数だろ。だったらnargin。
657:デフォルトの名無しさん
08/08/15 05:55:31
[X,Y,Z] = peaks(30);
surfc(X,Y,Z)
で出る図を png で保存すると、
真っ黒画像が作られるのですが、
みなさんはきちんと保存できたりしますか?
ぐぐってもだれも surf がおかしいとか言っていないようで。
658:デフォルトの名無しさん
08/08/15 06:18:21
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以外にもっと良い方法があれば
教えてもらえると助かります。
659:デフォルトの名無しさん
08/08/15 14:37:19
別ディレクトリの関数を addpath せずに実行する方法ってないでしょうか?
その関数を実行して、中で一連の addpath をさせたいのです。
660:デフォルトの名無しさん
08/08/15 14:41:36
>>658
とりあえず sprintf のほうが見やすそう。
661:デフォルトの名無しさん
08/08/15 15:55:16
>>657
オプションを設定
662:デフォルトの名無しさん
08/08/15 15:56:25
>>658
エラーの内容そのまま。
1行づつ、確認しろ。
663:658
08/08/15 16:53:11
レスくれた人達ありがとう。
うおお、下から3行目の num2str(2/i) は num2str(i/2) とすべきでしたね。evalの性質の理解不足
とか以前の問題でしたorz あと、sprintfを提案してくれた人もありがとう。これからいろいろ試してみます。
664:デフォルトの名無しさん
08/08/16 03:08:34
>>661
オプションって surf のオプション?どれ?
665:658
08/08/16 05:21:46
昨日はどうも。もう一つだけ質問させて下さい。
>>658とは逆のケースで、30個のエディットテキストにユーザーが入力した値を、15*2サイズの
行列Aとして格納することを考えています。
guideでエディットテキストを配置すると、対応するm-ファイルにCallback関数が30個自動的に
生成されるので、それぞれの下部に各行列成分への格納文を書けばいいわけですが、やはり非効率的
なので、もっと良い方法を探しています。
この場合、これら30個の自動生成された関数宣言文を削除し、evalなりfevalなりを使って、30個の
関数を変数を使ってまとめて定義するような文を手で打ってもいいんでしょうか? 確かこの手の、
「guideを経由しないでm-ファイルに直打ち」はNGのケースがある、と何かの本で見たことがある
んですが。
あるいは、このような場合での常套手段が他にありましたら教えて下さい。
666:デフォルトの名無しさん
08/08/17 12:10:20
>>659
スクリプトでいいならrunでできるけど
関数を呼ぶにははそれと組合せて
function handleを使うとかかな。
それかベタだけど
wd=cd(dir); func; cd(wd);
とか。
667:デフォルトの名無しさん
08/08/17 12:23:29
>>666
addpath をしたいだけなので、
スクリプトにして、run で呼べばよさそうですね。ありがとう。
668:デフォルトの名無しさん
08/08/17 19:18:43
ランダムな行列の中から局所的な最大値とその座標を求めたいのですが、
何かいい方法がありますでしょうか?
max関数を2回使うことで、大域的な最大値は求まるのですが。。
局所的な最大値を求めるアイデアがどうしても出てきません。。
お願いします。
669:デフォルトの名無しさん
08/08/17 23:01:34
>>668
大域的なmax値をNaNで置換して、複数回走らせる
あるいは
元データを微分する
670:デフォルトの名無しさん
08/08/18 07:09:50
>>668
局所的な最大値って極大値でいいのか?
いずれにしても「ランダムな行列」がどういうものであるかと
何を「局所的な最大値」と定義するかが決まらないと
答えられないのでは?
671:668
08/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が最大値(=極大値)
と考えたときです。
お願いします。
672:デフォルトの名無しさん
08/08/18 22:10:41
座標が整数値でない画像データを可視化したいんですが、どうやったらいいですか?
データの形式としては(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は行数)のベクトルデータとなっています。
これを穴があってもいいから通常の画像のように可視化したいんです。
点ごとにプロットする色を変えたらいいのかと思ったんですがうまくいかなくて
673:デフォルトの名無しさん
08/08/18 22:58:01
>>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:デフォルトの名無しさん
08/08/19 04:39:11
ある関数Fの最適化問題を解きたいんだけど、Fがゼロになった瞬間に
最適化を止めて次のことをさせたいような場合、どうしたらいいですか?
最適化にはNelder-Meadを使いたいので、Fminuncより
Fminsearchを使いたいです。
Fの値は定義上0より小さくなることはないので、一度0がでてからさらに
パラメター空間でサーチするのは単なる時間の無題です。
Fminsearchのコードがわかれば外にIF節をつけれてFの値が
0になったところで止めさせられるものの、どうしていいかわかりません。
675:デフォルトの名無しさん
08/08/19 07:27:11
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
08/08/19 20:22:10
>>673
即レスありがとうございます
ちなみに正規化ってどうやったらいいんでしょうか
xの列でソート→代入、yの列でソート→代入じゃ効率悪すぎですよね
手早くやれる方法はありますか?
677:デフォルトの名無しさん
08/08/19 21:11:55
1から100の整数をランダムに並び替えるプログラムを教えてください!
678:デフォルトの名無しさん
08/08/19 21:27:19
>>677
宿題は自分でやれ
679:デフォルトの名無しさん
08/08/20 00:42:24
>>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
680:デフォルトの名無しさん
08/08/20 02:50:49
すみません、どなたか>>665が分かる方いらっしゃいますか?
本質的には、いかにしてCallBack関数をまとめて設定するか、ということだと思います。
681:668
08/08/20 14:53:04
>>673
matlab centralにあるということでしょうか?
探してみましたが、わかりませんでした。。
もしよければどれか教えてもらえないでしょうか?
お願いします。
682:デフォルトの名無しさん
08/08/20 15:05:44
えー、なんで?極大値は英語にしたら extreme か extrema だよ?
extrema.m
683:668
08/08/20 23:06:13
>>682
完全に見落としてました。。
これでいけそうです。
ありがとうございました!
684:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/21 10:10:21
スペースもダメみたいですね…みにくくてすみません。
よろしくお願いします。
687:デフォルトの名無しさん
08/08/21 10:16:19
repmat を駆使して4次元配列にまでもっていけばきっとできる。
で、あとは min で argmin うけとる。
688:684
08/08/21 16:35:55
>>687
ご指摘いただいた方法でできました。
ありがとうございます。
689:デフォルトの名無しさん
08/08/21 21:09:03
>>684って行列の中身が一緒じゃないんでしょ?
だったらrepmatじゃだめじゃね?
ってか俺も今
for a=1:10
for b=1:5
kotae(a,b)=a+b
end
end
って感じのやってるけど、これfor文じゃなくせるの?
690:デフォルトの名無しさん
08/08/22 00:13:06
matlab centralで拾ったファイルを動かそうと思ったんですが、
「500の最大の再帰呼出の制限達しました。制限を変更するには、・・・」
となって動きませんでした。
制限を2000あたりまで変更しても同じ結果で。3000くらいになるとMatlabが
強制終了してしまいました。
これ何か対処法ないでしょうか。。??
691:デフォルトの名無しさん
08/08/22 02:39:48
mファイルの作成者に聞くべきじゃない?
つか、少しは自分でk
692:デフォルトの名無しさん
08/08/22 02:56:10
>>689
なくせう。for 文使うとゲロのろいぞ matlab。
693:デフォルトの名無しさん
08/08/22 09:31:00
コロンでできるの?
694:デフォルトの名無しさん
08/08/22 10:26:09
できる。
kotaeって10x5のマトリックスになるだろ?
695:684
08/08/22 17:33:09
>>689
meshgridというのを使うとてっとり早いです。
行列にして掛け算する、ということです。
687さんがおっしゃった通り、repmatを使ってもできます。
というか、repmatを使ってmeshgridが実装されてるようなイメージです。
696:MATLAB初心者
08/08/23 12:06:04
はじめまして。
MATLABをはじめたばかりの初心者なのですが、連番をつけるところで悩んでおります。
文字列の配列で0001、0002、..... 、9999のように整数で任意の桁数にしたいのですが
うまい方法はありませんでしょうか?
エクセルでやっていたときは、上記の場合であれば”000”という文字列と整数の値を結合し
左から4文字を切り出して使用しておりました。
MATLABでもエクセルでやっていたような力技でやるしかないのでしょうか?
もしご存知の方がおりましたら、ご教示いただけませんでしょうか?
よろしくお願いいたします。
697:MATLAB初心者
08/08/23 12:12:11
申し訳ございません。
上記のレスで左から切り出していたというのは誤りで、右から切り出しておりました。
698:デフォルトの名無しさん
08/08/23 14:51:58
>>697
URLリンク(dl.cybernet.co.jp)
699:MATLAB初心者
08/08/23 15:46:04
>>698
ありがとうございます。
大変申し訳ございません。私には、このページではsprintfでたとえば”1”を”00001”と定義する方法が理解できませんでした。
整数を5桁で表して、それを文字型にnum2strか何かで文字列に変換するようなことができるということでしょうか?
私の思い付きではstrcatをつかって696に書いたような力技で書く以外に方法がわかりません。
お手数をおかけしますが、ご教示いただいたページのどれを使用すればよいか教えていただけませんでしょうか?
700:デフォルトの名無しさん
08/08/23 16:25:44
>>699
printf フォーマット
でぐぐればいろいろ解説があるよ。
C言語が元だけど自由度がかなり高いから覚えとくとよい
↓とりあえず解決策
str=sprintf('%05d',i)
701:MATLAB初心者
08/08/23 16:35:09
>>700
取り合えずというか、そのものずばり私の欲しかった回答を書いていただいて、感謝の限りです。
お忙しい中、どうもありがとうございました。
これからも精進いたします。
702:675
08/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:デフォルトの名無しさん
08/08/27 10:05:55
findじゃだめ?
704:デフォルトの名無しさん
08/08/28 08:09:50
俺の力じゃ5行が限界だった
x=find(A==1);
y=find(A==2)-1;
z=intersect(x,y);
B=zeros(1,length(A));
B(z)=1;
もっと簡単なのきぼん
705:デフォルトの名無しさん
08/08/28 22:26:43
面白そうなので参加
((A(1:length(A)-1)+A(2:length(A))).*(A(1:length(A)-1)==1))==3
正の値で且つ後ろ一つは無視する前提
一般性があるかどうかは知らない
706:デフォルトの名無しさん
08/08/28 22:38:40
size(A)も使ってみよう
707:デフォルトの名無しさん
08/08/29 01:15:31
A(1:end-1)==1&A(2:end)==2
レベル低いなあ。
こんなのすらすっと出てこないってことは
よっぽど効率悪いコード書いてるんだろうなお前ら。
708:デフォルトの名無しさん
08/08/29 01:40:14
煽るのは構わんがそれ全部ゼロになるぞ
709:デフォルトの名無しさん
08/08/29 01:46:06
って1ズラしてるか
スマン
710:デフォルトの名無しさん
08/08/29 09:07:52
MATLABの関数自体のコードを読んでみると
勉強になるんだけどな。
711:デフォルトの名無しさん
08/09/04 13:25:51
質問です。
MATLAB上で画像処理をする際に
画像のある画素(座標)を保存して
さらにその保存した座標のx方向成分だけ読み出すには
どういったコマンドを入力すればいいんですか?
712:デフォルトの名無しさん
08/09/04 13:42:08
>>711
まず入門サイトでも読んだ方がはやくね?ってかはやい
713:デフォルトの名無しさん
08/09/04 16:05:56
2008からオブジェクト指向が充実したみたいで、
それについて詳しく解説してある本を知っていたら
誰か紹介していただけないでしょうか。
よろしくお願いします
714:デフォルトの名無しさん
08/09/08 12:56:09
誰か、MATLAB(2007b)で3次元の楕円球体の描き方教えてください。
715:デフォルトの名無しさん
08/09/08 18:24:34
定義したい変数名を、文字列を使って定義することは可能なのでしょうか?
例えば、
Data1 = 1;
Data2 = 2;
・
・
・
Data30 = 30;
と30個の変数を定義したいとき、for文を使って定義することは可能でしょうか?
716:デフォルトの名無しさん
08/09/08 23:43:57
>>714
キーワードを英語でlookforするくらいはしようよ。
>>715
help eval
717:デフォルトの名無しさん
08/09/09 11:36:43
はじめまして、今matlabの勉強をしている者です。
matlabのエディットウィンドウで、文字の挿入ってどうやるんですか?
現状では入力してある行に文字を挿入すると後ろの文字が消えてしまい、
全文入力し直しになってしまうのです、これをwordなどみたいに
文字を挿入したら、文が自動で後ろに移動してくれるようにできないですか?
また、同様にスペースキーも文字間のスペースをあけてくれず
文字を消してしまうのですが?どうしたらいいですか?
OSは vinelinux4
matalab v7.0.1 SP1です
718:デフォルトの名無しさん
08/09/09 22:12:45
MATLABっていうか
キーボードのinsert
719:デフォルトの名無しさん
08/09/10 13:58:00
GUIを作成して、
ボタンを押すとシミュレーションが実行するようにしたんですが、
GUIなしでコマンドから直接実行した場合だと160秒くらいで終わるのに、
なぜかGUIからだと260秒もかかるんですが、
なんでこんなにかかると思いますか?
やってることはまったく変わらないですが・・・。
720:133.43.185.64
08/09/10 21:20:24
>>719
全然見当がつかん。
プロファイラを実行した状態で GUI 経由でシミュレーションを行って、
時間のかかっている箇所を割り出してから相談してもらった方がよいと思われ。
721:デフォルトの名無しさん
08/09/11 00:44:20
>>720
アドバイスありがとう。
実はこういう経験あまりしてなかったんで、
プロファイラとか使ったことなかったんです。
ちょっと調べて割り出してみます。
722:初心者
08/09/11 01:43:15
非常に低レベルなことで申し訳ないのですが、
Cでいうポインタのような概念はMatlabにはないのでしょうか?
723:デフォルトの名無しさん
08/09/11 01:54:01
>>722
ないはずだよ
wikipediaにも書いてある
まあ、google codeとかmatlab centralで検索すれば
自作のポインタ関数出て来ても可笑しくないけど
724:デフォルトの名無しさん
08/09/11 02:15:40
>>722
デフォはポインタ
渡された変数を編集しようとした時点でコピーが始まる
725:デフォルトの名無しさん
08/09/11 06:15:09
>>722
何をしたいのかをはっきりさせて
それをMATLABではどうやるのか、と考える方がいいよ。
他の言語のやり方をそのまま持って来ようとしても
そうは行かない場合は多い。MATLABに限らず。
726:デフォルトの名無しさん
08/09/14 02:33:41
質問です。
例えば
3,6,4,5,2
4,15,7,5,3
6,4,4,7,3
のような行列があってノイズで15だけ値が大きい場合には、
それを周りの数字に近い値に矯正(たしか平滑?)するにはどうすればいいですか?
自分が知ってるやり方だと、ノイズも含め全ての成分が平均化されてしまいます。
どうにかノイズ以外はそのままの値で、ノイズ部分だけを周りの値に馴染ませたいんです。
727:デフォルトの名無しさん
08/09/14 02:59:50
10はノイズ? 13はノイズ?
15を適当に5とかにしたら「馴染んだ」ことになるの?
自分が何をやりたいかをまずは具体的にする。
君以外にそれがわかる人はここにはいないよ。
728:デフォルトの名無しさん
08/09/14 07:57:32
実験データの改竄捏造でもしたいのかなw
729:デフォルトの名無しさん
08/09/14 12:03:36
>>726
if ノイズ
平滑
else
なにもしない
730:デフォルトの名無しさん
08/09/15 07:18:58
ああ
731:デフォルトの名無しさん
08/09/15 13:38:27
>>726
新しいやり方を考えればいいだけ。
732:デフォルトの名無しさん
08/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)
でよいのか?
長文となってしまい、見にくくて申し訳ありませんがどなたか有識者の方がいらっしゃればご教授ください。
733:デフォルトの名無しさん
08/09/18 14:54:34
簡単な計算ミスのような気もするのですが、、、
734:デフォルトの名無しさん
08/09/18 22:11:28
>>733
と言いますと・・・?
735:デフォルトの名無しさん
08/09/18 22:13:54
周波数とインターバル(周期)とで混乱していない?
間違いを探したいのなら、
他の数字の組み合わせにしてみて、計算してみるのはどうでしょう?
736:デフォルトの名無しさん
08/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
どなたかご教授いただけると助かります
737:デフォルトの名無しさん
08/09/18 23:34:44
>>736
サンプリングインターバルも変えてみたらどう?
738:デフォルトの名無しさん
08/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)
という見方でよろしいのでしょうか?明らかに異なった波形が出てくるので、離散系の場合はボード線図を違う見方で見なければいけないのかなと予想しているのですが。。。
見方がわかりませんので、もしご存知でしたら教えてください。
739:デフォルトの名無しさん
08/09/19 00:33:01
URLリンク(www.ikko.k.hosei.ac.jp)
740:デフォルトの名無しさん
08/09/23 00:35:38
matlabをはじめたばかりなんですが質問です。
stem3でつくったグラフを等高線のグラフにそのまま変えたいのですが、
どなたかわかる方いらっしゃいましたらお願いします。
741:デフォルトの名無しさん
08/09/23 02:50:24
ステムを輪切りにして上から見て、意味あるの?
742:デフォルトの名無しさん
08/09/23 11:49:33
>741
値がどのように分布しているか等高線の方がわかりやすいと思い
変えたいのですが。
743:デフォルトの名無しさん
08/09/23 15:11:34
>>742
matlab 等高線
でぐぐれ
744:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/30 16:32:46
効率はわかりませんが
function out = gui2(handles)
handles.a=2;
out = handles;
として、呼び出し側でguidata(hObject, handles); することで解決しました。
746:t
08/10/07 19:46:19
ベルヌーイの螺旋を描ける方いらっしゃいませんか?
困っています。
747:デフォルトの名無しさん
08/10/15 20:23:01
描けるよ
748:デフォルトの名無しさん
08/10/18 10:33:41
>>745
構造体使う必要がないならglobal宣言すれば簡単かと
749:デフォルトの名無しさん
08/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)
----------------------
としたのですが、うまくいきませんでした。
おそらく行列のプロットを理解していない
と思うのですが・・・。
非常に低レベルな質問で申し訳ありませんが、
よろしくお願いします。
750:デフォルトの名無しさん
08/10/19 23:52:00
mesh(z)でどうだ
751:749
08/10/20 00:01:45
>>750 様
早速のご回答、ありがとうございます!
無事、3D plot をすることができました。
ありがとうございます!
752:デフォルトの名無しさん
08/10/23 17:54:34
MATLABで式の簡単にする変形を一ステップずつやって
どうやって、変形して最終の形にするのか
見る方法ありませすか?
753:デフォルトの名無しさん
08/10/23 23:45:04
意味がわからない。
mathematica?
754:デフォルトの名無しさん
08/10/23 23:47:52
シンプリファイとかやるときの途中の式がしりたい。
シンボリックマスツールズの
755:いかわ
08/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); によって時間データを抽出できるのですが。。
756:デフォルトの名無しさん
08/10/24 20:06:56
日付の区切りがスラッシュにかわったりしただけでも
どうすればいいかわからなくなるのかなこういう人は・・。
757:デフォルトの名無しさん
08/10/25 04:01:54
だれか Matlab compiler で matllab スクリプトコンパイルして、
C で使ったことある人いない?
URLリンク(www.mathworks.com)
これの通りやってみて、C をコンパイルできるようにまでは持って
いったんだけど、実行すると
libmatrixInitialization: unhandled exception
と出る。なにが足りないんでしょうかね?
758:デフォルトの名無しさん
08/10/25 05:49:28
愛
759:デフォルトの名無しさん
08/10/25 10:11:57
>>757
回答にはなってないかもしれんけど、
おいらは、加えてBuilder for .NETを使ってMファイルを.NETコンポーネント化
してから、.NET系言語から、そのコンポーネント呼び出して使ってるよ。
760:デフォルトの名無しさん
08/10/27 15:42:45
A=zeros(100000,100000);
だけでメモリ不足になります
余分な変数消去や仮想メモリ等をいじってみましたが効果はありませんでした
これを解消するには結局メモリ増設しかないのでしょうか?
761:デフォルトの名無しさん
08/10/27 16:38:49
>>760
メモリ増設しても無理じゃね?
100000*100000って、数値だけで10Gになるからアクセスすることさえ厄介になってくると思う。
メモリ量的には更に数倍になるわけで、オンメモリで処理するのはどうせ無理だし。
762:760
08/10/27 18:09:13
>>761さん
ご回答ありがとうございます
低レベルな質問ですみませんでした
このような行列はMATLABではそもそも扱えない(普通は扱わない)と考えてよいのでしょうか?
株価のシミュレーションでforを使うより行列を使った方が早いため
あのような行列が処理できると助かったのですが
763:デフォルトの名無しさん
08/10/28 01:30:51
「普通のPC」では扱えない というのが正解かと。
10Gのメモリっていうといわゆるスーパーコンピューターの領域
764:デフォルトの名無しさん
08/10/30 04:26:55
たとえば*を増やしていって、
処理の進行状況を表示したいのですが、
改行を抑制する方法はありませんか?
765:デフォルトの名無しさん
08/10/30 21:20:25
質問です
複素数の実部虚部それぞれ七桁で表示させたいのですが
zに複素数が入っていて
sprintf('%7f',z)
とすると実部だけが七桁で表示されてしまいます
どうしたらよいでしょうか?
766:デフォルトの名無しさん
08/10/30 22:41:17
関数realとimagを使用して実部と虚部を取り出せばいいじゃない
767:デフォルトの名無しさん
08/10/30 23:07:49
サポート受けられないということは、ここの住人はコピーや労か
768:デフォルトの名無しさん
08/10/31 00:06:48
>>764
なんで今どうやってるのか書かないの?
769:デフォルトの名無しさん
08/10/31 14:35:01
>>766
ありがとうございます
sprintf('%7f %+7f',real(z) imag(z)i)
のような感じでしょうか?
今試せる環境ではないのでiとかがどうなるのかよく分かりませんが・・・・・
770:デフォルトの名無しさん
08/10/31 19:10:46
教えてください。
1辺の長さが1の正三角形を上下に並べて出来る平行四辺形をプロットして、
それに含まれるかどうかの判定をしたいのですが、判定条件はどうしたらいいでしょうか。
N個の点を行列で与えて、図形に入っていれば赤、入っていなければ黒という風に
表示させたいのです。
よろしくお願いします
771:デフォルトの名無しさん
08/10/31 19:25:24
>>769
+の位置が不適切だけどそれを直せばイケル
772:デフォルトの名無しさん
08/11/01 17:39:35
>>771
すいませんまだ試せていないんですがこうすると実数値の場合に
3+0i
みたいな表示になっちゃいませんかね?
もっと簡単にできる方法ないですかね
773:デフォルトの名無しさん
08/11/07 14:26:53
質問があります
例えばデータシートが1000枚あって、各データシートからX,Y,Zの値を取り出して、
座標(X,Y,Z)をplot3でプロットします。これがこのシートの3次元での点(位置)になりますよね。
それを1000枚分やると3次元空間に点が1000点でき、動きの軌道のように繋がって表示されます(そういうデータなので)。
問題は次なのですが、数十点ほど動きの軌道からはみ出してプロットされた点(多分計測時のノイズ)が
存在します。なのでプロット点全体を平滑化したいのですが、三次元プロットした点をフィルタするのは
可能なんでしょうか。
よろしくお願いします
774:デフォルトの名無しさん
08/11/07 21:04:04
>>773
成分ごとにやれば?
775:デフォルトの名無しさん
08/11/08 07:04:44
結局の所作業としてはプロットした点をフィルタせずに
フィルタしてからプロットするんでしょ?
776:デフォルトの名無しさん
08/11/08 09:03:51
Matlab C ライブラリの関数
mlfMatrixPrint とか
mlfLength とかってどこに行ったの?
昔は matlab.h ってのがあったみたいなんだが、
R2007b だけど、ないんだよね。
matlab 内のビルトイン関数を C から直接呼び出せなくなったの?
777:デフォルトの名無しさん
08/11/09 14:40:02
私は>>675じゃないんですけど
>>675の解決策ってありますか?
778:デフォルトの名無しさん
08/11/10 07:24:17
スレを675以降もネットリと見てみよう
779:デフォルトの名無しさん
08/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を使っています。
よろしくお願いします
780:デフォルトの名無しさん
08/11/10 22:36:17
[A;B]という行列(n行m列)から [A;A;B;B]という行列(n^2行m列)をfor文を
使わずに 作りたいのですが可能でしょうか。
基礎的な質問でしょうがよろしくお願いします。
781:デフォルトの名無しさん
08/11/10 23:00:26
>>780
[A;A;B;B]だったらn*2行m列だと思うんですが。
782:780
08/11/10 23:08:49
例が分かりづらくて済みません。別の例ですが[A;B;C]という行列だったら
[A;A;A;B;B;B;C;C;C]という行列を作りたいのです。
783:デフォルトの名無しさん
08/11/10 23:58:44
>>779
メモリが足りないのものはしょうがないのである。
本当に全部格納しなければいけないのか考えてみるのである
784:デフォルトの名無しさん
08/11/11 00:01:09
>>782
つまり *3 でいいんだね?
X = [A;B;C] からA, B, C の分解は終わっているものとする。
Y = [repmat(A, 3, 1); repmat(B, 3, 1); repmat(C, 3, 1)]
785:780
08/11/11 00:57:46
>>784
ありがとうございます。確かに直接記述すればそうなるんですが、
行列の行数が任意の数nであってもそのような行列が作れるか
、つまり各行ベクトルをn個並べてn^2行の行列を作れるかということが
分からないんです。
786:デフォルトの名無しさん
08/11/11 06:44:37
matlab Mex で
X(1,:)
ってどうやんの?
787:デフォルトの名無しさん
08/11/11 10:22:08
>>785
repmat(x, 1, length(x))
788:780
08/11/11 13:01:35
>>787
おかげで解決しましたーありがとうございます。
789:デフォルトの名無しさん
08/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に書き込むにはどのようにすればよいでしょうか?
よろしくお願いします。
790:デフォルトの名無しさん
08/11/11 21:31:48
>>789
URLリンク(www.excite.co.jp)
791:789
08/11/12 16:00:23
>>789エラーの内容は分かったんですけれど
セルをtxtに書き込めるようにする方法が調べてみてもよく分かりません
もしよかったら教えてもらえませんか?
よろしくお願いします。
792:シン
08/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です。
793:デフォルトの名無しさん
08/11/14 18:27:37
レベル低過ぎ
説明書読め
794:デフォルトの名無しさん
08/11/14 21:16:11
MATLABわかる人
スレリンク(tech板)l50
スレからのマルチポスト
795:デフォルトの名無しさん
08/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)に結んでみよ。
のプログラムを作りたいんですけど、誰かわかる方教えてください。