質問編集履歴

3

コード修正

2018/12/08 04:18

投稿

origami_
origami_

スコア14

test CHANGED
File without changes
test CHANGED
@@ -10,11 +10,13 @@
10
10
 
11
11
  ### 発生している問題・エラーメッセージ
12
12
 
13
+ resultの配列が負になるポイントが変曲点とした場合、変曲点にマーカーをつける方法を教えてください。
14
+
13
- resultの配列が負になるポイントが変曲点とし場合、変曲点にマーカーをつける方法を教えてくださ。![![イメージ説明](d027740686ba25a6d98d3c3747d959fb.png)説明](b36809bc1416ad716886e1cc98b5b36a.png)](123118546cd80954c046d5adecfaa80c.png)
15
+ !![左:元データ 右:変曲点を求めたい区間](c55d809652f8f5cfd7849bf88add1aeb.png)](b2b89115a7abe40e5756be2cf2c9401e.png)
14
16
 
15
17
  11番目の区間が負になっているので12番目の点(グラフ右)が変曲点ということでしょうか?
16
18
 
17
- resultの配列→[0.20171338950000001, 0.21015402949999998, 0.19502000350000001, 0.20433273499999999, 0.16845394799999999, 0.168081231, 0.14231983350000002, 0.12233689899999997, 0.08080066050000001, 0.041403474500000009, -0.0056071255000000042, -0.039149066000000003, -0.07469213949999999, -0.11799488900000002, -0.14328871300000001, -0.18012878500000001, -0.173261625, -0.20117560449999999, -0.20206969749999998, -0.21288156799999999, -0.2059022455, -0.2068159155, -0.207493024, -0.20301948749999998, -0.18277358499999999]
19
+ resultの配列→[0.20171338950000001, 0.21015402949999998, 0.19502000350000001, 0.20433273499999999, 0.16845394799999999, 0.168081231, 0.14231983350000002, 0.12233689899999997, 0.08080066050000001, 0.041403474500000009, -0.0056071255000000042, -0.039149066000000003, -0.07469213949999999, -0.11799488900000002, -0.14328871300000001, -0.18012878500000001, -0.17326162, -0.20117560449999999, -0.20206969749999998, -0.21288156799999999, -0.2059022455, -0.2068159155, -0.207493024, -0.20301948749999998, -0.18277358499999999]
18
20
 
19
21
 
20
22
 

2

コード修正

2018/12/08 04:18

投稿

origami_
origami_

スコア14

test CHANGED
File without changes
test CHANGED
@@ -10,11 +10,13 @@
10
10
 
11
11
  ### 発生している問題・エラーメッセージ
12
12
 
13
- グラフ表示せたのですが実行結果が表示されません
13
+ resultの配列が負になるポイントが変曲点とした場合、変曲点にマーカーをつける方法を教えてください。![![イメージ説明](d027740686ba25a6d98d3c3747d959fb.png)説明](b36809bc1416ad716886e1cc98b5b36a.png)](123118546cd80954c046d5adecfaa80c.png)
14
14
 
15
- ーは発生ていません
15
+ 11番目の区間が負になっているので12番目の点(グフ右)が変曲点ということでょうか?
16
16
 
17
- resultの配列が負になるポイントが変曲点とした場合、変曲点にマーカーをつける方法を教えてください。
17
+ resultの配列→[0.20171338950000001, 0.21015402949999998, 0.19502000350000001, 0.20433273499999999, 0.16845394799999999, 0.168081231, 0.14231983350000002, 0.12233689899999997, 0.08080066050000001, 0.041403474500000009, -0.0056071255000000042, -0.039149066000000003, -0.07469213949999999, -0.11799488900000002, -0.14328871300000001, -0.18012878500000001, -0.173261625, -0.20117560449999999, -0.20206969749999998, -0.21288156799999999, -0.2059022455, -0.2068159155, -0.207493024, -0.20301948749999998, -0.18277358499999999]
18
+
19
+
18
20
 
19
21
 
20
22
 
@@ -38,13 +40,7 @@
38
40
 
39
41
 
40
42
 
41
- fig, (axL, axR) = plt.subplots(ncols=2, figsize=(10,4))
42
-
43
-
44
-
45
-
46
-
47
- for k in range(124,151):
43
+ for k in range(125,150):
48
44
 
49
45
  point=data[k]-data[k-1]/2*h
50
46
 
@@ -54,31 +50,25 @@
54
50
 
55
51
 
56
52
 
57
- axL.plot(data,"o-")
53
+ plt.subplot(1,2,1)
58
54
 
59
- axL.set_ylim(-1, 3)
55
+ plt.plot(data,"o-")
60
56
 
61
- axL.set_xlabel("time[s]")
57
+ plt.ylim(-1,3)
62
-
63
- axL.set_ylabel("amplitude[V]")
64
58
 
65
59
 
66
60
 
61
+ plt.subplot(1,2,2)
67
62
 
63
+ plt.plot(data[125:150],"o-")
68
64
 
69
- axR.plot(data[124:151], "o-")
70
-
71
- axR.set_ylim(-0.5,0.5)
65
+ plt.ylim(-0.5,0.5)
72
-
73
- axR.set_xlabel("time[s]")
74
-
75
- axR.set_ylabel("amplitude[V]")
76
66
 
77
67
 
78
68
 
69
+ plt.show()
79
70
 
80
-
81
- fig.show()
71
+ print(result)
82
72
 
83
73
  ```
84
74
 
@@ -86,7 +76,7 @@
86
76
 
87
77
  ### 試したこと
88
78
 
89
- 前回の質問にコードを追加しました
79
+
90
80
 
91
81
 
92
82
 

1

コードの追加

2018/12/08 04:09

投稿

origami_
origami_

スコア14

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  pythonを使用して測定したデータの変曲点を求めるシステムを作成したいと思っています
4
4
 
5
- 0.5s~0.6s範囲の変曲点を求めたいです
5
+ 測定データは加算平均処理を行っているで、測定時間いずれ中から雑音を気にせず単なる変曲点を求めたいです
6
-
7
- ![](85793aa37c1c96f172e1ba3ff42d5161.png)
8
6
 
9
7
 
10
8
 
@@ -12,9 +10,11 @@
12
10
 
13
11
  ### 発生している問題・エラーメッセージ
14
12
 
15
- ァイル読み込んで波形を表示させる部分しか作成きていません
13
+ グラフを2つ表示させたいのすが実行結果が表示されません
16
14
 
15
+ エラーは発生していません
16
+
17
- 有用ブラリや方法などありました教えて欲しです
17
+ resultの配列が負にるポント変曲点とした場合、変曲点にマーカーをつける方法を教えてくださ
18
18
 
19
19
 
20
20
 
@@ -24,37 +24,61 @@
24
24
 
25
25
  ```python
26
26
 
27
- #テキストファイルを読み込んで波形を表示する
28
-
29
27
  import numpy as np
30
28
 
31
29
  import matplotlib.pyplot as plt
32
30
 
33
31
 
34
32
 
35
- time, E = np.loadtxt("65-70kasan.txt",unpack="True")
33
+ data = np.loadtxt("60-70kasannomi.txt", unpack="True")
34
+
35
+ h = 1
36
+
37
+ result=[]
36
38
 
37
39
 
38
40
 
39
- fig = plt.figure(figsize=(6, 6))
41
+ fig, (axL, axR) = plt.subplots(ncols=2, figsize=(10,4))
40
42
 
41
43
 
42
44
 
43
- ax = fig.add_subplot(111)
44
45
 
45
- ax.plot(time, E, "o-", color="k")
46
46
 
47
- ax.set_xlim(0, 0.9)
47
+ for k in range(124,151):
48
48
 
49
- ax.set_ylim(-1, 3)
49
+ point=data[k]-data[k-1]/2*h
50
50
 
51
- ax.set_xlabel("time[s]")
51
+ result.append(point)
52
52
 
53
- ax.set_ylabel("amplitude[V]")
53
+ k = k+1
54
54
 
55
55
 
56
56
 
57
+ axL.plot(data,"o-")
58
+
59
+ axL.set_ylim(-1, 3)
60
+
61
+ axL.set_xlabel("time[s]")
62
+
63
+ axL.set_ylabel("amplitude[V]")
64
+
65
+
66
+
67
+
68
+
69
+ axR.plot(data[124:151], "o-")
70
+
71
+ axR.set_ylim(-0.5,0.5)
72
+
73
+ axR.set_xlabel("time[s]")
74
+
75
+ axR.set_ylabel("amplitude[V]")
76
+
77
+
78
+
79
+
80
+
57
- plt.show()
81
+ fig.show()
58
82
 
59
83
  ```
60
84
 
@@ -62,93 +86,7 @@
62
86
 
63
87
  ### 試したこと
64
88
 
65
- の質問サイトで変曲点の出し方ついて書かれた記事があったのですが、どのような処理行っているのか理解できせんでした。このコードは微分を行っていないように見えるのですが…[how to find inflection point](https://stackoverflow.com/questions/23087012/how-to-find-the-inflection-point-in-a-noisy-curve/23091695)
66
-
67
-
68
-
69
- ```python
70
-
71
- import matplotlib.pyplot as plt
72
-
73
- import numpy as np
74
-
75
- from scipy.ndimage import gaussian_filter
76
-
77
-
78
-
79
-
80
-
81
- def generate_fake_data():
82
-
83
- """Generate data that looks like an example given."""
84
-
85
- xs = np.arange(0, 25, 0.05)
86
-
87
- ys = - 20 * 1./(1 + np.exp(-(xs - 5.)/0.3))
88
-
89
- m = xs > 7.
90
-
91
- ys[m] = -20.*np.exp(-(xs - 7.)[m] / 5.)
92
-
93
-
94
-
95
- # add noise
96
-
97
- ys += np.random.normal(0, 0.2, xs.size)
98
-
99
- return xs, ys
100
-
101
-
102
-
103
-
104
-
105
- def main():
106
-
107
- xs, ys = generate_fake_data()
108
-
109
-
110
-
111
- # smooth out noise
112
-
113
- smoothed = gaussian_filter(ys, 3.)
114
-
115
-
116
-
117
- # find the point where the signal goes above the background noise
118
-
119
- # level (assumed to be zero here).
120
-
121
- base = 0.
122
-
123
- std = (ys[xs < 3] - base).std()
124
-
125
- m = smoothed < (base - 3. * std)
126
-
127
- x0 = xs[m][0]
128
-
129
- y0 = ys[m][0]
130
-
131
-
132
-
133
- plt.plot(xs, ys, '.')
134
-
135
- plt.plot(xs, smoothed, '-')
136
-
137
- plt.plot(x0, y0, 'o')
138
-
139
- plt.show()
140
-
141
-
142
-
143
-
144
-
145
- if __name__ == '__main__':
146
-
147
- main()
148
-
149
- ```
150
-
151
-
89
+ 前回の質問にコード追加しました
152
90
 
153
91
 
154
92