質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

590閲覧

CSVファイルに記録されている6行の加速度データを3行目から読み込みたいです。

mm0634

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/08/22 03:39

ヘディングのテキスト### 前提・実現したいこと

java(eclipse)で
bluetooth接続の加速度センサーを用いて加速度をcsvファイルに記録し、そのデータをDTWを用いて、危険動作をしているかどうかを判定するプログラムを作成中です。

1、2行目のCSVファイルのデータは読み込み判定をするのですが、3~6行目のデータを読み込んで判定をすることが出来ずに、1,2行目のデータを複数回判定している状況です。

発生している問題・エラーメッセージ

波形を[ t_start=4, t_end=29, d_min=16.48 ]で検出しました。 波形を[ t_start=4, t_end=31, d_min=16.40 ]で検出しました。 波形を[ t_start=4, t_end=32, d_min=16.40 ]で検出しました。 波形を[ t_start=4, t_end=33, d_min=16.53 ]で検出しました。 波形を[ t_start=4, t_end=34, d_min=16.64 ]で検出しました。 波形を[ t_start=4, t_end=35, d_min=16.67 ]で検出しました。 波形を[ t_start=4, t_end=36, d_min=16.72 ]で検出しました。 波形を[ t_start=4, t_end=38, d_min=16.78 ]で検出しました。 波形を[ t_start=4, t_end=39, d_min=16.82 ]で検出しました。 波形を[ t_start=4, t_end=40, d_min=16.84 ]で検出しました。 波形を[ t_start=4, t_end=41, d_min=16.90 ]で検出しました。 波形を[ t_start=4, t_end=42, d_min=16.95 ]で検出しました。 波形を[ t_start=4, t_end=43, d_min=16.95 ]で検出しました。 波形を[ t_start=4, t_end=44, d_min=17.05 ]で検出しました。 波形を[ t_start=4, t_end=45, d_min=17.07 ]で検出しました。 波形を[ t_start=4, t_end=46, d_min=17.09 ]で検出しました。 波形を[ t_start=4, t_end=47, d_min=17.11 ]で検出しました。 波形を[ t_start=4, t_end=48, d_min=17.29 ]で検出しました。 波形を[ t_start=4, t_end=49, d_min=19.54 ]で検出しました。 波形を[ t_start=4, t_end=50, d_min=29.44 ]で検出しました。 波形を[ t_start=44, t_end=70, d_min=23.38 ]で検出しました。 波形を[ t_start=44, t_end=72, d_min=23.37 ]で検出しました。 波形を[ t_start=44, t_end=73, d_min=23.44 ]で検出しました。 波形を[ t_start=44, t_end=74, d_min=23.45 ]で検出しました。 波形を[ t_start=44, t_end=75, d_min=23.49 ]で検出しました。 波形を[ t_start=44, t_end=76, d_min=23.67 ]で検出しました。 波形を[ t_start=44, t_end=77, d_min=23.69 ]で検出しました。 波形を[ t_start=44, t_end=79, d_min=23.62 ]で検出しました。 波形を[ t_start=44, t_end=80, d_min=23.77 ]で検出しました。 波形を[ t_start=44, t_end=82, d_min=23.79 ]で検出しました。 波形を[ t_start=44, t_end=84, d_min=23.84 ]で検出しました。 波形を[ t_start=44, t_end=86, d_min=23.88 ]で検出しました。 波形を[ t_start=44, t_end=87, d_min=23.90 ]で検出しました。 波形を[ t_start=44, t_end=88, d_min=23.99 ]で検出しました。 波形を[ t_start=44, t_end=89, d_min=24.03 ]で検出しました。 波形を[ t_start=44, t_end=91, d_min=24.07 ]で検出しました。 波形を[ t_start=44, t_end=92, d_min=24.15 ]で検出しました。 波形を[ t_start=44, t_end=94, d_min=24.15 ]で検出しました。 波形を[ t_start=44, t_end=95, d_min=24.23 ]で検出しました。 波形を[ t_start=44, t_end=97, d_min=24.20 ]で検出しました。

該当のソースコード

java

1package jp.kait.ic.tilab.posture; 2 3import java.io.BufferedReader; 4import java.io.FileReader; 5import java.io.IOException; 6import java.util.ArrayList; 7import java.util.List; 8import java.util.StringTokenizer; 9 10public class PostureDetect { 11 public static final double dtwThresh = 30.0; // 閾値 12 public static final double bigNumber = 10000.0; 13 public static final double bigNumber2 = 10000.0; 14 public static final double bigNumber3 = 10000.0; 15 16 public static void main(String[] args) { 17 // ファイル名 18 String postureDat = "files/dat2Shag.csv"; // 判定対象データ 19 20 // 変数 21 List<Double> x = new ArrayList<Double>(); // ストリーム波形用 22 List<Double> y = new ArrayList<Double>(); // 姿勢波形用 23 List<Double> x2 = new ArrayList<Double>(); // ストリーム波形用 24 List<Double> y2 = new ArrayList<Double>(); // 姿勢波形用 25 List<Double> x3 = new ArrayList<Double>(); // ストリーム波形用 26 List<Double> y3 = new ArrayList<Double>(); // 姿勢波形用 27 28 // データ読み込み 29 try{ 30 // ファイルの読みこみ 31 FileReader fr = new FileReader(postureDat); 32 BufferedReader br = new BufferedReader(fr); 33 34 35 // 行ごと処理 36 String line; 37 /*Sring line2; 38 String line3;*/ 39 StringTokenizer token; 40 StringTokenizer token2; 41 StringTokenizer token3; 42 43 // ストリーム波形読み込み 44 line = br.readLine(); 45 token = new StringTokenizer(line,","); 46 while(token.hasMoreTokens()){ 47 x.add(Double.parseDouble(token.nextToken())); 48 /*y2.add(Double.parseDouble(token.nextToken())); 49 y3.add(Double.parseDouble(token.nextToken()));*/ 50 } 51 52 token2 = new StringTokenizer(line,","); 53 while(token2.hasMoreTokens()){ 54 x2.add(Double.parseDouble(token2.nextToken())); 55 56 } 57 token3 = new StringTokenizer(line,","); 58 59 while(token3.hasMoreTokens()){ 60 x3.add(Double.parseDouble(token3.nextToken())); 61 62 } 63 64 // 姿勢波形読み込み 65 line = br.readLine(); 66 token = new StringTokenizer(line,","); 67 while(token.hasMoreTokens()){ 68 y.add(Double.parseDouble(token.nextToken())); 69 /*x2.add(Double.parseDouble(token.nextToken())); 70 x3.add(Double.parseDouble(token.nextToken()));*/ 71 } 72 while(token2.hasMoreTokens()){ 73 y2.add(Double.parseDouble(token2.nextToken())); 74 75 } 76 while(token3.hasMoreTokens()){ 77 y3.add(Double.parseDouble(token3.nextToken())); 78 } 79 br.close(); 80 }catch (IOException ex){ 81 ex.printStackTrace(); 82 } 83 84 // 姿勢判定 85 // 変数初期化 86 double d_min=bigNumber; 87 double d_min2=bigNumber2; 88 double d_min3=bigNumber3;// 最小値 89 int t_start = 0; // 開始点 90 int t_end = 0; // 終了点 91 int t_start2 = 0; // 開始点 92 int t_end2 = 0; // 終了点 93 int t_start3 = 0; // 開始点 94 int t_end3 = 0; // 終了点 95 String tmpStr=""; // デバッグ用 96 97 int lenX=x.size(); // ストリーム波形のサイズ 論文中t 98 int lenY=y.size(); // 姿勢波形のサイズ 論文中m 99 int lenX2=x2.size(); // ストリーム波形のサイズ 論文中t 100 int lenY2=y2.size(); // 姿勢波形のサイズ 論文中m 101 int lenX3=x3.size(); // ストリーム波形のサイズ 論文中t 102 int lenY3=y3.size(); // 姿勢波形のサイズ 論文中m 103 double[] d = new double[lenY+1]; 104 double[] d_dash = new double[lenY+1]; 105 int[] s = new int[lenY+1]; 106 int[] s_dash = new int[lenY+1]; 107 for(int i=1;i<lenY+1;i++)d[i] = bigNumber; 108 for(int i=1;i<lenY+1;i++)d_dash[i] = bigNumber; 109 d[0] = 0.0; 110 d_dash[0] = 0.0; 111 double[] d2 = new double[lenY2+1]; 112 double[] d_dash2 = new double[lenY2+1]; 113 int[] s2 = new int[lenY2+1]; 114 int[] s_dash2 = new int[lenY2+1]; 115 for(int i=1;i<lenY2+1;i++)d2[i] = bigNumber2; 116 for(int i=1;i<lenY2+1;i++)d_dash2[i] = bigNumber2; 117 d2[0] = 0.0; 118 d_dash2[0] = 0.0; 119 double[] d3 = new double[lenY3+1]; 120 double[] d_dash3 = new double[lenY3+1]; 121 int[] s3 = new int[lenY3+1]; 122 int[] s_dash3 = new int[lenY3+1]; 123 for(int i=1;i<lenY3+1;i++)d3[i] = bigNumber3; 124 for(int i=1;i<lenY3+1;i++)d_dash3[i] = bigNumber3; 125 d3[0] = 0.0; 126 d_dash3[0] = 0.0; 127 // 論文の添え字にあわせるため0追加 128 x.add(0, 0.0); 129 y.add(0, 0.0); 130 x2.add(0, 0.0); 131 y2.add(0, 0.0); 132 x3.add(0, 0.0); 133 y3.add(0, 0.0); 134 135 for(int t=1;t<lenX+1;t++){ 136 s[0]=t; 137 for(int i=1;i<lenY+1;i++){ 138 double[] d_best =new double[3]; 139 d_best[ 0]=d[i-1]; 140 d_best[1]=d_dash[i]; 141 d_best[2]=d_dash[i-1]; 142 double min=bigNumber; 143 for(int j=0;j<d_best.length;j++){ // 最も小さい値 144 min=Math.min(min, d_best[j]); 145 } 146 d[i] = Math.pow((double)x.get(t)-(double)y.get(i),2.0) +min; 147 if(min==d_best[0])s[i]=s[i-1]; 148 else if(min==d_best[1])s[i]=s_dash[i]; 149 else s[i]=s_dash[i-1]; 150 } 151 for(int m=1;m<lenX2+1;m++){ 152 s2[0]=m; 153 for(int i=1;i<lenY2+1;i++){ 154 double[] d_best2 =new double[3]; 155 d_best2[0]=d2[i-1]; 156 d_best2[1]=d_dash2[i]; 157 d_best2[2]=d_dash2[i-1]; 158 double min2=bigNumber2; 159 for(int j=0;j<d_best2.length;j++){ // 最も小さい値 160 min2=Math.min(min2, d_best2[j]); 161 } 162 d2[i] = Math.pow((double)x2.get(m)-(double)y2.get(i),2.0) +min2; 163 if(min2==d_best2[0])s2[i]=s2[i-1]; 164 else if(min2==d_best2[1])s2[i]=s_dash2[i]; 165 else s2[i]=s_dash2[i-1]; 166 } 167 } 168 for(int n=1;n<lenX3+1;n++){ 169 s3[0]=n; 170 for(int i=1;i<lenY3+1;i++){ 171 double[] d_best3 =new double[3]; 172 d_best3[0]=d3[i-1]; 173 d_best3[1]=d_dash3[i]; 174 d_best3[2]=d_dash3[i-1]; 175 double min3=bigNumber3; 176 for(int j=0;j<d_best3.length;j++){ // 最も小さい値 177 min3=Math.min(min3, d_best3[j]); 178 } 179 d3[i] = Math.pow((double)x3.get(n)-(double)y3.get(i),2.0) +min3; 180 if(min3==d_best3[0])s3[i]=s3[i-1]; 181 else if(min3==d_best3[1])s3[i]=s_dash3[i]; 182 else s3[i]=s_dash3[i-1]; 183 } 184 } 185 // SPRING-optimal case 186 if(d_min<=dtwThresh){ 187 boolean waveComp=false; 188 for(int i=1;i<lenY+1;i++){ 189 if(d[i]>=d_min || s[i]>t_end)waveComp=true; 190 else waveComp=false; 191 } 192 if(waveComp){ // 同一波形発見 193 tmpStr="[ t_start="+t_start+", t_end="+t_end+", d_min="+String.format("%.2f", d_min)+" ]"; 194 System.out.println("波形を"+tmpStr+"で検出しました。"); 195 d_min=bigNumber; 196 197 } 198 } 199 if(d_min2<=dtwThresh){ 200 boolean waveComp2=false; 201 for(int i=1;i<lenY2+1;i++){ 202 if(d2[i]>=d_min2 || s2[i]>t_end2)waveComp2=true; 203 else waveComp2=false; 204 } 205 if(waveComp2){ // 同一波形発見 206 tmpStr="[ t_start="+t_start2+", t_end="+t_end2+", d_min="+String.format("%.2f", d_min2)+" ]"; 207 System.out.println("2つめの波形を"+tmpStr+"で検出しました。"); 208 d_min2=bigNumber2; 209 210 } 211 if(d_min3<=dtwThresh){ 212 boolean waveComp3=false; 213 for(int i=1;i<lenY3+1;i++){ 214 if(d3[i]>=d_min3 || s3[i]>t_end3)waveComp3=true; 215 else waveComp3=false; 216 } 217 if(waveComp3){ // 同一波形発見 218 tmpStr="[ t_start="+t_start3+", t_end="+t_end3+", d_min="+String.format("%.2f", d_min3)+" ]"; 219 System.out.println("3つめの波形を"+tmpStr+"で検出しました。"); 220 d_min3=bigNumber3; 221 222 } 223 } 224 } 225 226 if(d[lenY]<=dtwThresh && d[lenY]<d_min){ 227 d_min=d[lenY]; 228 t_start=s[lenY]; 229 t_end = t; 230 } 231 if(d2[lenY2]<=dtwThresh && d2[lenY2]<d_min2){ 232 d_min2=d2[lenY2]; 233 t_start2=s2[lenY2]; 234 t_end2 = t; 235 } 236 if(d3[lenY3]<=dtwThresh && d3[lenY3]<d_min3){ 237 d_min3=d3[lenY3]; 238 t_start3=s3[lenY3]; 239 t_end3 = t; 240 } 241 // substitute d' for d, s' for s 242 for(int i=1;i<lenY+1;i++){ 243 d_dash[i] = d[i]; 244 s_dash[i] = s[i]; 245 } 246 for(int i=1;i<lenY2+1;i++){ 247 d_dash2[i] = d2[i]; 248 s_dash2[i] = s2[i]; 249 } 250 for(int i=1;i<lenY3+1;i++){ 251 d_dash3[i] = d3[i]; 252 s_dash3[i] = s3[i]; 253 } 254 } 255 } 256 257} 258

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

最初にreadlineを2回実行しといて(空読み)、CSVの読み込みを行えばいいのでは。

投稿2019/08/22 03:43

編集2019/08/22 03:43
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mm0634

2019/08/23 03:14

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問