ここから本文です

MATLAB初心者です。先輩方のご教授願います。 エクセルから取り込んだデータ1行20...

yuu********さん

2015/6/2620:00:01

MATLAB初心者です。先輩方のご教授願います。
エクセルから取り込んだデータ1行20列or20行1列のデータを数値ごとに数えていきたいと思っています。

ans1=length(find(A>=100));
ans2=length(find(A>=90&A<100));
ans3...
という風にすれば読み込んでいくことは可能なのですが、流石に20個も打ち込むのも時間がかかりますし、100列などになれば気が遠くなります・・・。
なので出てくる答えの入力される変数?(ans1,ans2のように)を変えつつ数を数えていくfor文を作りたいのですがどうすれば良いのでしょうか?
お願いいたします。

閲覧数:
93
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

vio********さん

2015/6/2621:52:46

それはとても面倒なプログラムです。

eval関数を使えば文字列をスクリプトとして実行できますので、forループで都度テキストを生成してevalで実行を繰り返せばお望みのプログラムが完成します。

しかし、その変数にアクセスするためには、その変数がいくつ生成されたのかを管理しておく必要があり、何番目にアクセスするかをコントロールする必要が出てきます。 正直、面倒なプログラムになるのでオススメはできません。 せめてひとつの変数の行列に格納するべきでしょう。



そもそも判定する値が一定量で変化しているのでヒストグラム(hist関数)で代用できませんでしょうか?

例えば… a = [1:0.1:5 6:10 11:2:20 21:5:30]; というデータがあった時に、hist(a, 5:10:35); と実行すれば、ビンの中心を [5 15 25 35] とした範囲でヒストグラム図を描くことができます。 これは結果として、0~10, 10~20, 20~30 … の範囲の数を数えたことになります。

結果を取り出したい場合は、nelements = hist(a, 5:10:35); で取り出すことができます。

質問した人からのコメント

2015/6/26 21:55:40

回答ありがとうございます!結局別の方法で上手いこと行ったので結果オーライということになりました!
この方法はかなりオススメされないという勉強になりました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる