![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
画像の輝度値が保存されたtxtファイルを開いて、輝度値のヒストグラムを表示したいのですがrubyの配列の操作に戸惑っています。histgram[value] += 1のvalueが不確定なのでnilになってしまいます。何か良い解決方法はありますか?
image.txtは
輝度値 その他の情報となっているためsplit[0]で輝度値部分のみを抽出しています。
f = open('image.txt')
color = Array.new
histogram = Array.new
correlation = Array.new
n = 0
while c = f.gets
color[n] = c.split[0].to_i
value = c.split[0].to_i
histogram[value] += 1
if(n>1)
correlation[value + 50 * color[n-1] ] += 1
end
n+=1
end
f.close
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
要素の上限が分かっていることがほとんどなので、No.1の回答で良いのですが、ちょっと違った方法を紹介します。
histogram[value]=histogram[value] ? histogram[value] +1 : 1
histogram[value]を条件判断し、nilの時には1にするものです。まあ当たり前と言えば当たり前の方法です。
もうひとつ、
histogram[value] ||= 0
histogram[value] += 1
最初の行を追加します。これはnilの場合(falseも)に0を代入するというもので初期化ができます。
これらの場合いずれにしても代入していない要素はnilになりますので、後で0にしてやらないと不都合があるかも知れません。
グラフを書くところまで考えるなら、rsrubyでRの機能を使うのが便利なように思います。
gnuplotよりも高度なグラフが書きやすいのと、統計計算が簡単にできるので私はもっぱらrsrubyを使っています。
(Rをダウンロードして、gemでrsrubyをインストールします)
No.1
- 回答日時:
こんにちは
> histgram[value] += 1のvalueが不確定なのでnilになってしまいます。
多分 histgram[]の各要素の初期値がnilなので+1ができないという意味だと思うのですが、初期値を決めてあげれば良いです。(詳しくは参照URLをご確認くださいね)
size = 10
histogram = Array.new(size, 0)
p histogram[0] # => 0
p histogram[9] # => 0
p histogram[10] # => nil
それとも、もしかして value = c.split[0].to_iが上手く数値に変換されないという意味でしょうか?
その場合は、image.txtの問題のある行を提示していただいた方が良いと思います。
参考URL:http://doc.ruby-lang.org/ja/1.9.3/class/Array.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
SELECTの選択状態を、複数のVAL...
-
switchを使って四則演算のプロ...
-
自動的に連番生成したURLにリン...
-
HTML、Javascriptでトグルボタ...
-
複数のsubmitボタンで押された...
-
javascriptにてHTMLのhiddenエ...
-
selectboxのoptionタグのvalue...
-
javascriptでhiddenに二次元配...
-
クイズ作成:15個の問題から5個...
-
商品コードを入れたら自動で商...
-
JAVASCRIPTで、ボタンを押した...
-
チェックボックスの値について
-
ラジオボタンとテキストを同時...
-
javaスクリプトで、テーブルの...
-
%の計算の仕方
-
例外処理(try...catch...)が...
-
JavaScriptでBMI計算
-
値を初期化したい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
3桁区切りのカンマをつけたい...
-
VB.NET DateTimeの型について
-
複数のsubmitボタンで押された...
-
テキストボックスに入力された...
-
フォーム内容を上から順番にJav...
-
VBAをJavaScriptに変換したいです
-
javascriptでhiddenに二次元配...
-
大量のselect要素のvalueを短い...
-
フォームで入力した値を別のフ...
-
プルダウン選択時、既に入力済...
-
ラジオボタンと連動して文字列...
-
引数に数値、文字列の混在
-
クイズ作成:15個の問題から5個...
-
クリックの度に加算していくには?
-
setIntervalの間隔を途中で変更...
-
Pythonで会員サイトの自動ログ...
-
selectboxのoptionタグのvalue...
-
JavaScriptによる自動計算フォ...
おすすめ情報