fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. // 実験10Hzのデータから抜粋したサンプルデータ(時間, 電圧)
  5. // ※レポートには、このように配列に格納して解析した旨を記載する
  6. double time[] = {
  7. 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0,
  8. 14.3, 14.4, 14.5, 14.6, 14.7, // 山の付近の例
  9. 22.6, 22.7, 22.8, 22.9, 23.0 // 2つ目の山の例
  10. };
  11. double voltage[] = {
  12. 2.396, 2.399, 2.414, 2.409, 2.404, 2.407, 2.409, 2.409, 2.412, 2.404, 2.407,
  13. 3.050, 3.100, 3.131, 3.110, 3.020, // 14.5sでピーク
  14. 3.150, 3.210, 3.254, 3.200, 3.100 // 22.8sでピーク
  15. };
  16.  
  17. // データの個数を計算
  18. int n = sizeof(voltage) / sizeof(voltage[0]);
  19.  
  20. printf("--- ピーク電位検出結果 (C言語) ---\n");
  21. printf("回数 | 時間 [s] | 電圧 [V]\n");
  22. printf("---------------------------\n");
  23.  
  24. int peak_count = 1;
  25.  
  26. // 前後の値と比較してピーク(極大値)を検出
  27. for (int i = 1; i < n - 1; i++) {
  28. if (voltage[i] > voltage[i-1] && voltage[i] > voltage[i+1]) {
  29. // ノイズ除去のため3.0V以上の山のみ抽出
  30. if (voltage[i] > 3.0) {
  31. printf("%2d | %8.2f | %.3f\n", peak_count, time[i], voltage[i]);
  32. peak_count++;
  33. }
  34. }
  35. }
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
--- ピーク電位検出結果 (C言語) ---
回数  |  時間 [s]  |  電圧 [V]
---------------------------
 1    |     14.50  |  3.131
 2    |     22.80  |  3.254