Matlabで、例えば1000個の乱数をrandnで発生させて、そのうちある値より大きいものだけを保存するにはどうしたら良いですか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/07/01 20:12:22
  • 終了:2011/07/08 20:15:02

回答(2件)

id:jan8 No.1

jan8回答回数450ベストアンサー獲得回数962011/07/02 21:06:41

ポイント50pt

配列random_numbersが1000個の乱数で、

配列extractedが、上記乱数から(例えば)2.0以上の数を再格納した配列です。

これをワークスペースからsample1.matファイルに保存しています。

random_numbers = randn(1,1000);

j=1;

for i=1:length(random_numbers)

if random_numbers(i) > 2.0

extracted(j) = random_numbers(i);

j = j + 1;

end

end

save 'sample1' extracted

id:oyukok No.2

oyukok回答回数1ベストアンサー獲得回数02011/07/08 09:34:07

ポイント50pt

今更ですがmatlab的にはfor文使わない方がそれっぽいかも。

random_numbers = randn(1,1000);

extracted = random_numbers(random_numbers > 2);

  • id:webster2
    ??? エラー ==> save
    Unable to write file sample1: permission denied.

    エラー ==> test at 9
    save 'sample1' extracted
    といわれます。どうしたらよいのでしょうか。
  • id:jan8
    最後に配列をファイルに保存する処理を実行する時に、
    格納場所に書き込む権限がないとエラーが出ているのだと思います。
    現在の作業フォルダに何かファイルを書き込むと同じエラーが出ると思います。

    現在の作業フォルダに対して書き込み権限があるかどうか、
    OSのアカウントと権限を確認してみて下さい。

  • id:webster2
    save sample1 extracted で解決したようです。
  • id:jan8
    余計なコメントしてすいませんでした。
    エラーが解決して良かったです。

    oyukokさんの回答に驚いてます。
    MATLABって素敵ですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません