
No.4ベストアンサー
- 回答日時:
三度Kulesです。
なるほど、そういうことでしたらANo.2さんの書かれたsumを使う方法がよいでしょう。
sumは合計を出す次元を指定することができますので、
sum(A>0,2)とすれば行ごとの要素数が出ます。
ちなみに列ごとの要素数を出したければ
sum(A>0,1)とすればよいです。
繰り返し、と書かれていますが、Matlabの場合各関数の使い方をよくみてみると
forループなどのループ構文を使わなくても書ける場合が多いです。
以上、参考になれば幸いです。
No.3
- 回答日時:
再びKulesです。
>再び質問して恐縮なのですが行ごとに繰り返し0より大きいデータの総数を知りたいときにはどのようにすれば良いのでしょうか。
別に行ごとに繰り返さなくても、findの関数はインデックスを一行で出しますので、
length(find(A>0))
でOKです。
参考になれば幸いです。
この回答への補足
ご返答ありがとうございます。
大変申し訳ございません。質問の仕方がおかしかったです。
kulesさんの返答は全体の0より大きいデータの総数を知ることが出来るってことですよね。
行ごとの0より大きいデータの数を繰り返し求めたいときはどうしたら良いのでしょうか。
たびたび申し訳ございませんがどうかよろしくお願いします。
No.2
- 回答日時:
答えの一例を示します.
例に挙げていただいた2×5の行列をAとすると,
答えは
sum(A(1,:) > 0)
で得られます.
以下,解説.
A(1,:) 行列のAの一行目
A(1,:) > 0 行列Aの1行目の成分のうち,0より大きな成分を1に,それ以外の成分を0に書き換えたもの
sum ベクトルの成分の和を計算する関数
この回答への補足
たいへんありがとうございます。sum関数でもできるのですね。
確認したら見事できました。
再び質問して恐縮なのですが行ごとに繰り返し0より大きいデータの総数を知りたいときにはどのようにすれば良いのでしょうか。
よろしくお願いします。
No.1
- 回答日時:
まあ他にもいろいろやり方はあると思いますが、私はたいていの場合次のように書きます。
length(find(A(1,:)>0))
ちなみにですけど「0以上」ではなく「0より大きい」ですよね?
ちょっとだけ解説すると
A(1,:)…行列Aの1行目
find(F)…Fが真であるインデックスを返す(今回だと[1,2,4])
length(B)…行列Bの長さを返す
まあこれらの関数についてもっと詳しく知りたければコマンドウィンドウで
help 関数名
とタイプすれば見れると思います。
参考になれば幸いです。
この回答への補足
たいへんありがとうございます。あっ、「0より大きいです」。すみません。
確認したら見事できました。
再び質問して恐縮なのですが行ごとに繰り返し0より大きいデータの総数を知りたいときにはどのようにすれば良いのでしょうか。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報