インターネット(TFD v1と呼ばれる)の前に存在していた科学的なオーディオファイルタイプから、サンプル値の圧縮されていない簡単な生の配列をオーディオ形式に変換しています... this pageのget_signal()関数では、サンプル値がどのようにフォーマットされているのか、また、アレイから256ポイントを読み取るためにサンプルレートが必要なのはなぜですか?fscanf(ファイルポインタ、 "%d n%lg n"、sig_length、sample_rate);それをどのように解釈するのですか?
fscanf (filepointer , "%d\n%lg\n" , sig_length, fsam );
fscanf (raw_audio_array_file, ?? , 256 , SRate_Float );
/*******************************************************
* function get_signal reads signal data into sig_re from
* the file pointed to by filepointer. If the file is a
* type 2 TFD file then the imaginary part is set too.
* If the signal is type 1, its hilbert transform is
* returned in the imaginary part (sig_im).
********************************************************/
void get_signal (filepointer, sig_re, sig_im, fsam, sig_length)
FILE *filepointer;
double sig_re[],
sig_im[],
*fsam;
int *sig_length;
{
register int i; /* counter variable */
int sigtype; /* data file type */
double dummy1,
dummy2; /* dummy temporary variables */
fscanf (filepointer, "%d\n", &sigtype);
if (sigtype == 1) { /* Type one TFD file */
fscanf (filepointer, "%d\n%lg\n", sig_length, fsam);
for (i = 0; i < *sig_length; i++) {
fscanf (filepointer, "%lg\n", &sig_re[i]);
}
analytic (sig_re, sig_im, *sig_length);
}
else {
if (sigtype == 2) { /* Type 2 TFD file */
fprintf(stderr,"Complex signal.\n");
fscanf (filepointer, "%d\n%lg\n", sig_length, fsam);
for (i = 0; i < *sig_length; i++) {
fscanf (filepointer, "(%lg,%lg)\n", &sig_re[i], &sig_im[i]);
printf("%lg\n",sig_re[i]);
}
}
else {
fprintf (stderr, "ccg : incorrect input format.\n");
exit (7);
}
fclose (filepointer);
}
} /* END OF FUNCTION get_signal */
こんにちはPeter K、その複雑なコードの1000行のうち、それは私が問題を抱えている唯一の行です...それは、元のコードから逐語的にコピーされたコピーで、別のファイルタイプの条件を引いたものです。どうしてあなたのコードが否定的であるかを否定するのはなぜですか?)...私はfsamをSRate_floatにラベルを付け直して質問を単純化し、fsamが浮動小数点サンプルレートであることを説明しました。確かにあなたはfscanf関数を認識して理解していますか?以前は、DSPフォーラムに質問のコードを含めるように求められましたが、今はDSPフォーラムではDSPコードではないと言われています...私に教えてください。 –
ご迷惑をおかけして申し訳ありません。私は以前にスタック交換でこの質問を試みました:...... fscanf(filepointer、 "%d \ n%lg \ n"、sig_length、fsam);回答者は、コードは解釈不能で、生のオーディオやTFD1ファイルが何であるのかわからず、見つけなければならないと答えた人はいなかった(生のオーディオファイルは何か? )。あなたがTFDを勉強してfscanf句を書いているのを見て、fscanfが返す配列を数値的に説明するほど親切でしょうか? –
コンセンサスを避けて、ジェネラリストである人と比較して、あなたの専門的な研究の限界に驚くでしょう。あなたのコード上でopineする以前のCの権限は言った: K&R関数の宣言は、四半世紀以上の3つのISO C標準のために行っています。さらに、fscanfの戻り値をテストするのは驚きのレシピです。 - ジェンス...そして彼は私のノブの質問に答えることができませんでした。 –