1

性別の検出にCのLIBSVMを使用しています。sum-train.cには、関数 parse_command_line(argc、argv、input_file_name、model_file_name);があります。

ここで、この関数に引数を渡しますが、コマンドラインは使用しませんが、このプログラム内で渡します。たとえば、引数は次のようになります。 -s 1 -t 2 -c 1 -g 0.5 -v 5 input_file_name model_file_name

しかし、これらの引数をこの関数に渡す方法がわかりません。*注:提供されているバイナリを使用したくないので、これをすべて実行しています。どんな助けでもありがたいです。

4

1 に答える 1

1

それらが標準mainタイプの引数である場合、必要なものは次のとおりです。

argc「プログラム名」を含む引数の数でなければなりません(この値が何に設定されるかは実装に依存するため引用されています)。

argv以下を指定する文字ポインタの配列である必要があります。

  • 「番組名」。
  • 各引数。
  • NULL ターミネータ。

したがって、コマンドラインについては

-s 1 -t 2 -c 1 -g 0.5 -v 5 input_file_name.dat model_file_name.dat

あなたが持っているでしょう:

const char *myArgV[] = {
    "progname",
    "-s", "1",
    "-t", "2",
    "-c", "1",
    "-g", "0.5",
    "-v", "5",
    "input_file_name.dat",
    "model_file_name.dat",
    NULL };
int myArgC = sizeof (argv) / sizeof (argv[0]) - 1;

そして呼び出します:

char inputfile[100]; // potential buffer overflow risk but, since it is
char modelfile[100]; //  sample code, not really relevant.
parse_command_line (myArgC, myArgV, inputfile, modelfile);

これにより、引数が解析され、渡された 2 つのファイル名変数が入力され、svm_parameter提供された引数に基づいて内部変数が設定されます。

于 2012-08-17T01:31:00.603 に答える