質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

Q&A

解決済

1回答

1093閲覧

MATLAB for、ifの使い方が分かりません

MATLAB-06290629

総合スコア6

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

0グッド

0クリップ

投稿2018/06/13 09:43

nx = size(ref_img,1);
ny = size(ref_img,2);
R = 30;
Ndata = floor(nxnyR/100);
Si = floor(conv(sig,sig));
Mu_x = nx/2;
Mu_y = ny/2;

dat = zeros(Ndata,2);

for i = 1:Ndata
rand_x = Mu_x + Sirandn(Ndata,1);
rand_y = Mu_y + Si
randn(Ndata,1);

if (rand_x(i)>0) && (rand_x(i)<nx) dat(i,1) = rand_x(i); end if (rand_y(i)>0) && (rand_y(i)<ny) dat(i,2) = rand_y(i); end

end

datの1列目にrand_x、2列目にrand_yの値をifの条件式で満たされた値で全て埋めたいんですがどうしたらよいでしょうか。
教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tachikoma

2018/06/13 09:52

どこに問題を抱えてるのか分からないのですが、ひとまずrand_x等をforの外に出したほうが良さそうですよ。
MATLAB-06290629

2018/06/13 10:13

datの中身を0以上、nx以下の数字で全て埋めたいのですが、このスクリプトだと一部しか埋まりません。そのため、全て埋まるまでループを繰り返したいと考えているのですがどうしたらいいか分かりません。教えて頂きたいです。
tachikoma

2018/06/13 11:50

各要素にたいして、条件を満たすまで乱数生成を繰り返したいということですかな?
MATLAB-06290629

2018/06/13 12:13

その通りです。加えて各要素の乱数値が重複・一致しないように作成したいです。
guest

回答1

0

ベストアンサー

条件を満たすまで乱数生成をするならこうですかね。下手すると無限ループになるので気をつけてください。

matlab

1nx = size(ref_img,1); 2ny = size(ref_img,2); 3R = 30; 4Ndata = floor(nx*ny*R/100)5Si = floor(conv(sig,sig)); 6Mu_x = nx/2; 7Mu_y = ny/2; 8 9dat = zeros(Ndata,2); 10 11for i = 1:Ndata 12 while 1 13 rand_x = Mu_x + Si*randn; 14 if (rand_x > 0) && (rand_x < nx) 15 break; 16 end 17 end 18 dat(i,1) = rand_x; 19 20 while 1 21 rand_y = Mu_y + Si*randn; 22 if (rand_y>0) && (rand_y < ny) 23 break; 24 end 25 end 26 dat(i,2) = rand_y; 27end

投稿2018/06/13 12:22

tachikoma

総合スコア3601

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MATLAB-06290629

2018/06/14 00:26 編集

上手くいきました。ありがとうございます。これに、rand_xの値が重複しないようにしたいのと、rand_xではnx/2,rand_yではny/2となる値(原点)を必ず入れたいのですがどうしたらよいですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問