• 締切済み

matlabで迷路作成

迷路作成のプログラミングをmatlabで作りたいと思っています。 作るアルゴリズムとしましては、壁伸ばし法で 『初めに大きな一部屋の迷路を用意し、乱数を用いて壁の一点を選び、自分自身とぶつからないように壁を伸ばしていく。伸ばせなくなったら、別の一点を選び、同じ操作を繰り返す。壁を作る場所がなくなったら終わる。壁を伸ばす方向は乱数で決める。』です。 一部屋は5×5の行列で、乱数は一様乱数を成分とする行列を使って、プログラミングしたいのですが、matlabの使い方がいまいち分からないため、それをどこにどう書けばいいかわかりません。 matlabに詳しい方、このアルゴリズムをプログラミングできる方は、やり方を詳しく教えていただけないでしょうか?よろしくお願いします。

みんなの回答

  • Kules
  • ベストアンサー率47% (292/619)
回答No.1

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10117341415 最近こういうことがよくあるな~。 ということで。 ・ssappさん≠saapp09さん の場合 リンク先の回答をご参照ください。 ・ssappさん=saapp09さん の場合 リンク先の回答を締めきらずこちらで質問をしている理由を補足下さい。 「説明が不十分だから」は通りません。まだあなたには(知恵袋の場合一度だけですが) 補足質問をするチャンスが残されているはずです。 参考になれば幸いです。

関連するQ&A

  • Javaで3D迷路を作ります。

    Javaで3D迷路を作りたいです。 ポインタを操作し、3D迷路を 進んでいくゲームを作ります。 3D迷路の形は、立方体の中に 迷路があるようなイメージを 考えています。 モデルの作成は「ブレンダー 」というアプリを使います。3 Dのモデルをデータで出力する ようです。 問題は、この3D迷路につける 「当たり判定」がとても難しい らしいということです。ポイ ンタをボールとし、壁と接触し た際に跳ね返るなどの動作を 行いたいです。最悪、壁に触れ たらゲームオーバーというだけ の処理でも構いません。「壁に ふれる」という判定のやり方 を教えてください。 何か、参考になる本、サイトな どはありますでしょうか?また 、Javaプログラミングに詳しい 方がいらっしゃいましたらアド バイスなど頂けますと幸いで す。 ちなみに、Javaの基礎を学んだ 学生数人が開発します。 以上です。よろしくお願いい たします。

  • 行列計算の速度

    行列計算の速度 今、スパース行列計算のプログラミングをしているのですが、Cで作成していて、計算速度について考慮しています。同じような計算をmatlabでさせてみたら、matlabでの行列計算は圧倒的に速かったので、matlabを使う事を考えてます。行列計算を得意とするmatlabなのですが、matlabはCを使っているので、Cでのプログラミングをあきらめるべきなのか考えています。 Cもmatlabも良い点、悪い点はあると思いますが、何か参考になるアドバイスがあればいいなと思って、投稿させてもらいました。お願いします。

  • MATLABでSVMのプログラミングについて

    SVMのサンプルコード(MATLAB)を読んでいますが、和訳はできてもそれぞれが何のために行われているのかイメージできず困っています。 ===================================== X1 = randn(2, num1) + 2*ones(2, num1); X2 = randn(2, num2) - 2*ones(2, num2); X = [X1, X2]; ===================================== の意味は、 ==================================== X1=平均が0で分散が1の正規分布の2行10列の乱数行列と、全ての要素がプラス2の2行10列の行列を加算した結果。 X2=平均が0で分散が1の正規分布の2行10列の乱数行列と、全ての要素がマイナス2の2行10列の行列を加算した結果。 X=X1とX2の正規分布を内包した世界。 ===================================== SVMという分類器を使う前に、分類前のデータを扱い易い尺度の世界にいれる下準備なのかなぁ、と想像していますが、 なぜ平均が0で分散が1の正規分布なのか、なぜそれを2倍したり、マイナスにした世界を用意しているのかわかりません。(これはたまたまこのコードでそう設定しているだけで、平均や分散の値は変更してかまわないのでしょうか。もしそうであれば、どういうデータを分類する場合により大きな分散にするべきでしょうか。) 正規分布の世界は平均とSD値で完全に記述でき、また異なる正規分布のXとYに、ある重みづけをしてもやはり正規分布に従う、という性質がありますが、それとこのSVMでの冒頭処理はどう関連付けられるのでしょうか。 統計、行列、ベクトルの知識が足りないのだなと実感し勉強中ですが、困っています。 すみませんが、ぜひヒントか勉強するべきポイントを教えていただけると助かります。 どうぞよろしくお願い致します。

  • 迷路生成

    たびたび質問して申し訳ありません。 迷路生成を穴掘り法を使って作ろうと思ったのですが うまくいきません。 ROAD=0,WALL=1 /*迷路の構造体*/ typedef struct Mazestruct{ /*迷路のサイズ(size[0]:横のサイズsize[1]:縦のサイズ)*/ int size[2]; /*スタートの座標(st[0]:横座標st[1]:縦座標(一番左上を(0,0))*/ int st[2]; /*ゴールの座標(goal[0]:横座標goal[1]:縦座標*/ int goal[2]; /*壁と通路のデータ*/ int maze_d[wid_max][len_max]; }Mazestruct; void wall_make(int x,int y,Mazestruct *maze) { int x1,y1,px,py; int gx[2]={1,-1},gy[2]={1,-1}; while(maze->maze_d[x][y]==ROAD){ while(1){ x1=x; y1=y; while(1){ px=rand()%2; py=rand()%2; if(maze->maze_d[x1+gx[px]*2][y1+gy[py]*2]==WALL){ maze->maze_d[x1+gx[px]][y1+gy[py]]=maze->maze_d[x1+gx[px]*2][y1+gy[py]*2]=ROAD; x1=x1+gx[px]*2; y1=y1+gy[py]*2; } else if(maze->maze_d[x1+1][y1]==ROAD&& maze->maze_d[x1-1][y1]==ROAD&& maze->maze_d[x1][y1+1]==ROAD&& maze->maze_d[x1][y1-1]==ROAD){ goto quit; } } } } quit:; } (px,py)を回転させるというところと 四方向をチェックするところをどのようにしたらよいか分りません。 回転させる方法が分らないので乱数をもう一度得るようにして四方向のチェックに関しては 四方向が道ならループをやめるようにしました。

  • Excelで乱数発生のアルゴリズム

    今、Excelでの乱数発生に関して勉強しているものです。 プログラミングの本や、乱数の本を読んで線形合同法という漸化式が乱数発生のときに使用されているというところまで調べることはできたのですが、Excelでのアルゴリズムについてはあまり調べられなくて困っています。 知っている方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • 偏りのある乱数のアルゴリズム

    偏りのある乱数のアルゴリズム(コード)を教えてください。 ただし、中心極限定理などに見られるような「中心にのみ偏る」乱数ではなく、「任意の位置を中心に偏る」乱数です。例えば、範囲を0.0<1.0、任意の位置を0.75とした場合の分布グラフを見ると、0.75がカーブの頂点となります。 また一方で、複数の偏りが見られる乱数のアルゴリズムも知りたいです。カーブが心電図のように複数見られる乱数です。ビットマップ上にプロットすると、部分的に点の集合が形成されるようなものが理想的です。 ※プログラミング言語・精度・速度は不問。本人数学に関しては素人です。

  • 分散共分散行列の逆行列

    以下の行列を考えます. 行列X(M行N列,成分の値は分散1のガウスノイズ) 行列Xの分散共分散行列S(M行M列), 行列Sの逆行列Y(M行M列) N=M+1のときはN≠M+1のときに比べて行列Yの各成分の大きさがかなり大きくなる,という結果が得られました. (計算にはMATLABの関数covとpinvを用いました.) これは数学的に正しいことなのでしょうか. また,正しいとしたらどうしてこのようなことが起こるのでしょうか. 行列Yの計算結果の例を以下に示します.(行列Yを500回算出し,それらの平均値を示しています.) http://wisteria.orz.ne.jp/download/pinvcovX.jpg 縦・横方向の軸は行列Yのインデックスを,高さ方向の軸は行列Yの成分の値を示しています. 上述した現象の原因についてご教授いただけると幸いです.

  • c言語がわからなく、教えていただきたいです。

    待ち行列のプログラミング 待ち行列をC言語でプログラミングしたいのですが、わからなくて困っています!! 誰か助けて下さい!! 2工程、3機械から成っている。2種の製品A,Bを製造している。第2工程では機械が2つあり、待ちが少ない方に進む。 ジョブ数は500、加工時間は指数乱数、到着間隔はポアソン到着、納期は加工時間*納期係数(10)です。 この待ち行列のプログラムを教えていただきたいです。 お願いいたします。

  • Matlabで自作関数をオーバーロード

    Matlabの組み込み関数の中には、引数の数や戻り値の数に応じて異なる作用をするものが沢山あると思います。 例えば組み込みのmax関数だと y=max(x) ならxの第一次元にについての最大値を返しますし、 [y,i]=max(x) なら、さらに i に最大値のindexを代入、 一方 x=max(x,y) ならx,yの各要素について大きい方を取った行列を、 x=max(x,[],d) ならxのd次元についての最大化をしてくれます。 質問ですが、そういう関数を自分で作ることは可能ですか? function [z,w]=f(x,y) という風に関数を定義してしまうと、たとえyを関数中で利用しない場合でも、引数yを指定しなければエラーになってしまいます。同じ関数名でも呼び方に応じて異なった操作をさせることはできないでしょうか?

  • 慣性テンソルの対角化

    剛体の力学において慣性テンソルは3×3の対称行列で表せて、 その行列を対角化すれば慣性主軸方向の成分のみになるということ(数式としての変形)は理解できたのですが、 行列の対角化とは物理的にはどういう意味なのですか? わかる方よろしくお願いします。

専門家に質問してみよう