• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Visual Basic6.0を使ったプロファイル補正についてPart2)

Visual Basic6.0を使ったプロファイル補正についてPart2

nakashiの回答

  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

Textファイル一行に1データと仮定して Dim sBuf As String Dim hFile As Integer Dim dData() As Double Dim iNumbOfData As Integer Dim iCalcPtr As Integer hFile = FreeFile Open "c:\temp\hoge.txt" For Input As hFile Do  If EOF(hFile) <> False Then Exit Do  Line Input #hFile, sBuf  ReDim Preserve dData(iNumbOfData)  dData(iNumbOfData) = Val(sBuf)  iNumbOfData = iNumbOfData + 1 Loop For iCalcPtr = 0 To UBound(dData)  Debug.Print dData(iCalcPtr) Next iCalcPtr

関連するQ&A

  • Visual Basic6.0を使ったプロファイル補正についてPart1

    私はプログラムが苦手なのですが、測定した濃度プロファイルをプログラムにより補正する必要性にかられています。Part2にプログラムを示しました。しかし、これではうまく走りません(プログラム初心者(ただいま勉強中です。)) 私がしたいのはテキストファイルから数値列(一列400行程度で値は2.1523e+19など)を読み込み、 h = h + (Data(i + 1) * Exp(-((i - surface + 1) * step) / ramda) + g) * step / 2 g = Data(i + 1) * Exp(-((i - surface + 1) * step) / ramda) z = CSng(h / ramda * (1 - Exp(-(step * (l - surface) / ramda)))) という式をつかって計算し、その計算結果をテキストで出力することです。 いろいろ本を見て調べているのですが、なかなかうまくいきません。 まず分からないのがテキストファイルから数値を入力しそれを配列にして計算するってことがよく分かりません。そして、計算された出力値を出力する関数が分かりません。いろいろ試しているのですが、うまくいきません。 プログラムに詳しい方、どなたか以下のプログラムの間違ってるところを指摘し、訂正して頂けませんか?よろしくお願いします。 また、デバックの使い方がよく分かりません。教えていただけませんか。

  • 高校数学の計算(指数)

    f{(1+exp(-πi(K+L))+exp(-πi(H+L))+exp(-πi(H+K))}=0 f:定数 π:円周率 H,K,L:いづれも整数 i:虚数 expX=e^X 上の式を満たすH,K,Lの条件はH,K,Lが偶数奇数混合の場合ということらしいのですが、なぜそうなるのか分かりません。 分かる方お願いします><

  • ダイヤモンドの構造因子

    ダイヤモンドの構造因子を求めると f{1+exp(-πi(h+k))+exp(-πi(k+l))+exp(-πi(l+h))+exp((-πi/2)(h+k+l))+exp((-πi/2)(3h+3k+l))+exp((-πi/2)(3h+k+3l))+exp((-πi/2)(h+3k+3l))} となったのですが、この構造因子が0になる指数がうまく求められません。どのように考えればよいでしょうか。

  • 構造体配列ポインタを引数で使うには

    いつもお世話になってます。 C言語を使って、構造体配列を引数として使って、サブ関数で取得した値(配列)をメイン関数に渡したいと思っているのですが、受け渡しが上手くできません。 現在以下の様に組んでいます。 /* 構造体宣言 */ typedef struct EXP1 { char sTime[17]; /* 開始日時 */ struct { int num; /* データ数 */ float data[96]; /* データ */ } getdata[5]; } EXP1 ; /* メイン関数 */ int func1( EXP1 ex1; for( loop = 0 ; loop < 5 ; loop++){ ans = funcGet( array1, &ex1.getdata[loop].data ); } if( ans = 0 ){ for( loop = 0 ; ; loop++){ printf("%f",ex1.data[count].pvdata[loop] ); } } } /* サブ関数 */ static int funcGet(int array, float *fvalue) { ans = calcvalu( array, fvalue ); //←float型で値が取得される。 for( i = 0 ; i < 10 ; i++ ) { printf("%f", *(fvalue + i); } return 0; } サブ関数で"fvalue"を確認したところ、正常に値が取得できているのですが、メイン関数では取得できていません。 どうかアドバイスをよろしくお願いします。

  • 結晶構造因子

    塩化ナトリウムの結晶構造因子は [Fna + Fcl・exp{-Πi(h+k+l)}][1+exp{-Πi(k+l)}+exp{-Πi(h+l)}+exp{-Πi(h+k)}] になります。 Fna,Fclはそれぞれナトリウムと塩素の原子散乱因子です。 この式のexp{-Πi(h+k+l)は何を意味するのでしょうか? 教えてください。

  • 読み込んだデータを配列へ代入する方法

    ---ここから--- 1,2 3,4 ---ここまで--- このようなファイルを読み込んでデータを配列へ格納するには, $pathname="D://data.txt"; open MYFILE, "$pathname"; @list=<MYFILE>; for($i=0;$i<2;$i++){ @dat=split(/,/,$list[$i]); print @dat; } close MYFILE; といったようなforあるいはwhileで1つの配列(上の場合だと@dat)に1行のデータを繰り返し入れていく方法しか思い浮かびません。できれば1行目のデータは@dat1という配列へ,2行目のデータは@dat2という配列へ,といったように行ごとに別々の配列へ代入させたいのですが良い方法はないでしょうか。 もしくは@dat=([1,2],[3,4])のような2次配列の形にでもできれば最高なのですが、、、

    • ベストアンサー
    • Perl
  • 限定的すぎてすみません

    数学の計算で答えはわかってるのですが その解法がわからないので質問させてください ∫[α^2/(α^2+p^2)]*exp[i*p*x/h]dp =(π*α)*exp[-α*x/h] (定数はα、h) お願いします

  • CSVファイルを読み込み、ファイル名を変更。

    CSVファイルを読み込み、ファイル名を変更。 使用言語はperlです。perlは初心者です。 アルゴリズムが、 CSVファイルを読み込み→2次元配列に格納→ファイル名変更 という流れになっているプログラムを作成中です。 CSVファイルの中身は あ.txt , a.txt い.txt , b.txt う.txt , c.txt です。 CSVファイルを読み込み2次元配列に格納するプログラムは以下のようにしました。 ----------------------------------- $i= 0; open IN, "sample.csv"; while (<IN>) { my @data = (); @data = split (/,/); for (0..@data) {$jdata[$i][$_] = "$data[$_]";} $i++; } close IN; ---------------------------------------- 「あ.txt」を「a.txt」に変更しようとして、この中に rename $jdata[0][0] , $jdata[0][1] ; と書いてみましたが、変換されません。 どう書けばよいのでしょうか。よろしくお願いします。

    • ベストアンサー
    • Perl
  • 2つのvoid関数でmallocを使うと2step目でセグメントエラーが出る

    プログラムのmainを見やすくするためにサブルーチンとしてvoid関数を使っているのですが、その中でmallocでメモリを確保して配列を作ろうとするとエラーが出てしまいます。概略を書くと #include <stdio.h> #include <math.h> #include <stdlib.h> //voidの宣言 void a(double* ,double*, double,); void b(double* ,double*, double,); main(){ double *c,*d,e; double *f,*g,h; c=(double *)malloc(sizeof(double)*N) //Nは適当な整数です d,f,gも同様の処理 色々な作業 while(適当回数繰り返します){ a(c,d,e); b(f,g,h); 色々な作業 } } void a (double* c, double* d, double e){ double **i,*j,; int k; i=(double **)malloc(sizeof(double *)*M) //Mは適当な整数です for(k=0;k<=M;k++){ i[k]=(double *)malloc(sizeof(double)*M) //Mは適当な整数です } jも同様にメモリ確保 様々な作業(逆行列の計算など) } void bはaとほとんど同じです。 mallocで二次元配列や配列を作っています。勿論同じ文字は使っていません。 以上のようなプログラムでgccは通ります。でも実行するとwhile内での1step目は上手くいくのですが、2step目のb内での始めの(double *)malloc(sizeof(double)*L)(Lは適当な整数です)で、つまりメモリ確保でセグメントエラーが出ます。両者とも片方を削るとエラーは出ません。1step目は何故上手くいくのか、2ステップ目で何故ダメなのかが分かりません。皆様の御教授をお願いします。

  • シリアル通信波形のなまり

    2つのマイコン間のシリアルデータラインを測定すると、"H","L"を繰り返している時は正常に矩形波になっているのですが、"H","L"が一旦止まった直後に垂直に"L"に落ちるところが、時定数を持っているかのように、ゆっくり"L"に落ちる波形になっていました。 マイコン間には対GNDにコンデンサがいるわけでもなく、ダンピング抵抗がシリーズにいるだけで、原因がわからないのですが、考えられることは何があるのでしょうか? 見にくいですが、下記のような波形です。    __ ___ ____   | | | | | \ __| |___| |___|   \____ なまって"L"へ落ち切る前に、次の通信が始まると下記のように途中でまた"H"になります。    __ ___ ____ ____ ____   | | | | | \ | | | | | | | | |   \ | | | | | | | | |   \| | | | __| |___| |___|   |___| |__ CMOSなので、Hi-Zになり浮遊容量などとでなまってるのでしょうか? シリアルはクロック、データI/O、CEの四本です。