今、画像処理のプログラムを作成中です。
それで、このような計算式がありまして、
Hue = (b-g) * (pai/3)
Hueの計算結果がたくさんあって、数にして311,040個。
(Hueの単位は度で、0°~360°までです。)
それで、その結果を配列にいれたいんです。
どうやって配列を作ればいいのか分かりません。
どなたか分かる方、詳しく教えて下さい!!

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>大いに疑問です。


大丈夫みたいですよ。

Option Explicit
Option Base 0

Private Sub Command1_Click()
Dim x(311040) As Double
Dim idx As Long

For idx = 0 To 311040
x(idx) = idx + 1
Next idx

Debug.Print x(0) + x(311040)
MsgBox x(0) + x(311040)
End Sub

Debug.Print と MsgBox は、デバッグ環境、exeにコンパイルしたもの、両方で確認したという意味です。
#ちなみに、最適化もなかなかのもんです。

>Basicの配列のメモリーへの実装方法
 詳しく知らないのですが、VBの変数はすべて格納領域へのポインタのようです。Variant型なんてのは、相当複雑なことをやっているようです。
 インテル系CPUは、80386(だったか)あたりから、ディスクリプタテーブルを採用しているので、大容量のメモリ領域を擬似的に連続領域のように扱えるコンパイラを作成できます。恐らくVBもそうなのでしょう。

>隔世の感あり。
 たしかに、おっしゃるとおりです。
DISK-BAISCのランダムアクセスファイルで8インチFDにPUT,GETしたり、2kBの中にBASICインタプリタを詰め込んでいたTINY-BASICのころは、まるで石器時代の幻ようです。

>メモリーがふんだんに使えるようになると
 先日もショップで高校生が「ハードディスクは、30GBじゃたりない」と話していて、ハリ倒してやろうかと思いました。

若者がベテランに「Cの構造体って、C++のクラスみたいなもんですか?」と質問したっていう笑えないジョークもあるくらいで・・・

#かくいう私は、すでに老兵です。

この回答への補足

すいません。私の説明が悪かったです。
計算結果は311,040個なんですが、それらの全部の値は0°~359°の計360個の配列に分けて入れたいんです。
例えば、Hue=2.6なら小数点以下は切り捨てて、まずHue=2にします。
それを2°の配列に格納し、カウントしていく。
3110,40個の値がそれぞれ入ってしまった後、2°は何個あったか分かるようにしたいんです。
この説明で大丈夫でしょうか?
よろしくお願いします!!

補足日時:2002/01/31 16:30
    • good
    • 0
この回答へのお礼

ykkw2001さんのを参考にさせて頂いて何とかできました!!
しかし、パソコンが古いため計算がめっちゃ遅いです。
学校の研究室なので我慢するしかありません(;;)
いろいろ書いてくださってありがとうございました★

お礼日時:2002/01/31 18:50

回答者のルーチンが動くことは確認しました。

しかしメモリー容量の
関係から1~例えば320、000個の配列に全て空きなく数をセットして行った時、エラーにならないと言えるでしょうか。大いに疑問です。
Basicの配列のメモリーへの実装方法をご存知の方教えてください。
 メモリーが今のように利用できなかった少し前までは、配列では
なく、レコードとして、外部記憶装置(Disk)に記録し、それを読んで処理していたと思います。DOS-Basicの固定長ランダムファイルのようなものを使うべきでないのでしょうか。Get #1,nのn=320000とすれば320000番目のレコードの内容が変数(フィールド)にセットされる仕組みがあれば、a=b(320000)と同じではないでしょうか。
ただ処理時間の点で格段の差はあるでしょうが。配列にデータを
セットする時も、多量の場合はDiskファイルから読みこんでいませんか。
VBにもPUT,GETステートメントは残されているようです。
メモリーがふんだんに使えるようになると。この質問と
回答者のようなのが当たり前になるのでしょうね。
4Kのメモリーのコンピュターを見聞きしていた者にとって
隔世の感あり。
    • good
    • 0
この回答へのお礼

まだVB初心者なので説明が上手くできていなかったみたいです。。。
すいませんでした。

お礼日時:2002/01/31 17:01

dim hue(311040) as double


hue(311040)=99.99
msgbox hue(311040)

「こんなんじゃダメだ」ってことなの?
    • good
    • 0
この回答へのお礼

すいません。ちょっと言い方間違ってました。。。(><)っっ

お礼日時:2002/01/31 16:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング