2025年9月6日
この時点でカンマ認識していない問題が発生中
👇
csvロード時を確認しよう。
// ---- CSVを読み込み、List2Dに格納する(文字列版)----
// デフォルト引数をやめ、常に明示指定させる
void LoadFromCsv(string filepath, const ushort delimiter)
{
Reset();
// 👉 まず内部データをリセット(以前の内容をクリア)
int handle = FileOpen(filepath, FILE_READ|FILE_TXT|FILE_ANSI);
// 👉 CSVファイルを「テキスト」「ANSI」で読み取り専用で開く
// 成功するとファイルハンドルが返る、失敗すると -1
if(handle < 0) return;
// 👉 ファイルが開けなかった場合は処理を中断して終了
string line = "";
string last_line = "";
string fields[];
int cols = 0;
while(!FileIsEnding(handle))
// 👉 ファイルの終端に達するまで繰り返し(1行ずつ処理するループ)
{
string line = FileReadString(handle);
// 👉 1行を文字列として読み込む
StringTrimLeft(line);
// 👉 行の先頭の空白を削除
StringTrimRight(line);
// 👉 行の末尾の空白や改行を削除
if(line == "") continue;
// 👉 空行だった場合はスキップして次の行へ
string fields[];
// 👉 1行を区切った結果を格納する一時配列を宣言
int cols = StringSplit(line, delimiter, fields);
// 👉 指定した区切り文字(delimiter)で line を分割し、結果を fields[] に入れる
// 戻り値 cols は分割された要素数(列数)
if(cols <= 0) continue;
// 👉 分割結果が0個(異常行など)ならスキップ
this.Append(fields);
// 👉 今のオブジェクト(List2Dクラス?)に分割した1行(fields)を追加する
// 最後の有効行を保存
last_line = line;
}
// --- whileの外にデバッグを移動 ---
debug.Print("最後に処理した line", last_line);
debug.Print("最後に使われた delimiter", IntegerToString(delimiter));
debug.Print("最後の cols", cols);
debug.Print("最後の fields[]", fields);
FileClose(handle);
// 👉 ファイルを閉じる(忘れるとエラーやロックの原因になる)
debug.Print("fields♡",fields);
debug.Print("fields[0]♡",fields[0]);
debug.Print("fields[0]♡",fields[0]);
// 👉 ★注意:ここは while の外なので、fields はスコープ外!
// → コンパイルエラー 'fields' undeclared identifier
// → デバッグを入れたいなら while 内に移動するべき
}
今こんな感じでデバッグ中。ここのどこかでカンマ的ロードに失敗しているのかもしれない。
デバッグしたところ、
「
debug.Print("最後に使われた delimiter", IntegerToString(delimiter));
」
ここでコンマやセミコロンが表示される必要があるのに、
59などと表示されてしまった、
…、と思ったがStringSplit()メソッドは、組み込み関数であり、
引数にはascllの番号を入力するのだそう。
なので、引数をすべて44または56に変更した。
あーだこーだして、
いま、
change_to_N_days()メソッドで
csvのロードに失敗している。
一個前の
NormalizeSigmoid()メソッド
でのcsv出力を確認しよう。
2025年9月18日
NormalizeSigmoidがおかしいのでデバッグ中。
→ なんかヘッダーとか、二次元的スプリット位置がずれている。
2025年9月20日
Sigmoid関数で正規化処理をしている。
NormalizeSigmoid無いで、
SigmoidScaleRowInplaceを実装予定。
現在、SigmoidScaleRowInplaceメソッドを作成中