回答編集履歴

4

例の部分の表現を修正

2021/07/30 08:34

投稿

YAmaGNZ
YAmaGNZ

スコア10514

test CHANGED
@@ -382,13 +382,19 @@
382
382
 
383
383
  これは2021/07/25 10:16に回答に追記した部分で指摘しています。
384
384
 
385
+
386
+
387
+ 例)
388
+
385
- > 例)3回目の計算の場合、配列の合計値は1.59919672251788となります。
389
+  3回目の計算の場合、配列の合計値は1.59919672251788となります。
386
-
390
+
387
- > しかし、平均を求めるためのsum1は前回計算で求めたsum1の0.178250187626749+配列合計の1.59919672251788の1.77744691014463となってしまっています。
391
+  しかし、平均を求めるためのsum1は前回計算で求めたsum1の0.178250187626749+配列合計の1.59919672251788の1.77744691014463となってしまっています。
388
-
389
-
390
-
392
+
393
+
394
+
395
+
396
+
391
- また、質問を編集された
397
+ また、質問を編集されて追記され
392
398
 
393
399
 
394
400
 

3

具体的な値が提示されたのでその値での検証内容に変更

2021/07/30 08:34

投稿

YAmaGNZ
YAmaGNZ

スコア10514

test CHANGED
@@ -126,15 +126,15 @@
126
126
 
127
127
  1回目
128
128
 
129
- 入力値 RSSI = -54 : TxPower = -75
129
+ 入力値 RSSI = -85 : TxPower = -75
130
-
130
+
131
- distance = 0.0891250938133746
131
+ distance = 3.16227766016838
132
132
 
133
133
  配列の和を求める部分
134
134
 
135
135
  ma[0]=0 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
136
136
 
137
- mat = 0 : (参考)配列の合計(ma.Sum())=0
137
+ mat = 0 : (参考)配列の合計=0
138
138
 
139
139
  平均を計算 (mat / 5)
140
140
 
@@ -142,95 +142,95 @@
142
142
 
143
143
  配列をシフト後
144
144
 
145
- ma[0]=0.0891250938133746 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
145
+ ma[0]=3.16227766016838 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
146
146
 
147
147
 
148
148
 
149
149
  2回目
150
150
 
151
- 入力値 RSSI = -54 : TxPower = -74
151
+ 入力値 RSSI = -81 : TxPower = -75
152
-
152
+
153
- distance = 0.1
153
+ distance = 1.99526231496888
154
-
154
+
155
- 配列の和を求める部分
155
+ 配列の和を求める部分
156
-
156
+
157
- ma[0]=0.0891250938133746 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
157
+ ma[0]=3.16227766016838 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
158
-
158
+
159
- mat = 0.0891250938133746 : (参考)配列の合計(ma.Sum())=0.0891250938133746
159
+ mat = 3.16227766016838 : (参考)配列の合計=3.16227766016838
160
-
160
+
161
- 平均を計算 (mat / 5)
161
+ 平均を計算 (mat / 5)
162
-
162
+
163
- mat = 0.0178250187626749
163
+ mat = 0.632455532033676
164
-
164
+
165
- 配列をシフト後
165
+ 配列をシフト後
166
-
166
+
167
- ma[0]=0.1 : ma[1]=0.0891250938133746 : ma[2]=0.0891250938133746 : ma[3]=0.0891250938133746 : ma[4]=0.0891250938133746
167
+ ma[0]=1.99526231496888 : ma[1]=3.16227766016838 : ma[2]=3.16227766016838 : ma[3]=3.16227766016838 : ma[4]=3.16227766016838
168
168
 
169
169
 
170
170
 
171
171
  3回目
172
172
 
173
- 入力値 RSSI = -54 : TxPower = -73
173
+ 入力値 RSSI = -86 : TxPower = -75
174
-
174
+
175
- distance = 0.112201845430196
175
+ distance = 3.54813389233576
176
-
176
+
177
- 配列の和を求める部分
177
+ 配列の和を求める部分
178
-
178
+
179
- ma[0]=0.1 : ma[1]=0.0891250938133746 : ma[2]=0.0891250938133746 : ma[3]=0.0891250938133746 : ma[4]=0.0891250938133746
179
+ ma[0]=1.99526231496888 : ma[1]=3.16227766016838 : ma[2]=3.16227766016838 : ma[3]=3.16227766016838 : ma[4]=3.16227766016838
180
-
180
+
181
- mat = 0.456500375253498 : (参考)配列の合計(ma.Sum())=0.456500375253498
181
+ mat = 14.6443729556424 : (参考)配列の合計=14.6443729556424
182
-
182
+
183
- 平均を計算 (mat / 5)
183
+ 平均を計算 (mat / 5)
184
-
184
+
185
- mat = 0.0913000750506996
185
+ mat = 2.92887459112848
186
-
186
+
187
- 配列をシフト後
187
+ 配列をシフト後
188
-
188
+
189
- ma[0]=0.112201845430196 : ma[1]=0.1 : ma[2]=0.1 : ma[3]=0.1 : ma[4]=0.1
189
+ ma[0]=3.54813389233576 : ma[1]=1.99526231496888 : ma[2]=1.99526231496888 : ma[3]=1.99526231496888 : ma[4]=1.99526231496888
190
190
 
191
191
 
192
192
 
193
193
  4回目
194
194
 
195
- 入力値 RSSI = -54 : TxPower = -72
195
+ 入力値 RSSI = -82 : TxPower = -75
196
-
196
+
197
- distance = 0.125892541179417
197
+ distance = 2.23872113856834
198
-
198
+
199
- 配列の和を求める部分
199
+ 配列の和を求める部分
200
-
200
+
201
- ma[0]=0.112201845430196 : ma[1]=0.1 : ma[2]=0.1 : ma[3]=0.1 : ma[4]=0.1
201
+ ma[0]=3.54813389233576 : ma[1]=1.99526231496888 : ma[2]=1.99526231496888 : ma[3]=1.99526231496888 : ma[4]=1.99526231496888
202
-
202
+
203
- mat = 0.512201845430196 : (参考)配列の合計(ma.Sum())=0.512201845430196
203
+ mat = 11.5291831522113 : (参考)配列の合計=11.5291831522113
204
-
204
+
205
- 平均を計算 (mat / 5)
205
+ 平均を計算 (mat / 5)
206
-
206
+
207
- mat = 0.102440369086039
207
+ mat = 2.30583663044225
208
-
208
+
209
- 配列をシフト後
209
+ 配列をシフト後
210
-
210
+
211
- ma[0]=0.125892541179417 : ma[1]=0.112201845430196 : ma[2]=0.112201845430196 : ma[3]=0.112201845430196 : ma[4]=0.112201845430196
211
+ ma[0]=2.23872113856834 : ma[1]=3.54813389233576 : ma[2]=3.54813389233576 : ma[3]=3.54813389233576 : ma[4]=3.54813389233576
212
212
 
213
213
 
214
214
 
215
215
  5回目
216
216
 
217
- 入力値 RSSI = -54 : TxPower = -71
217
+ 入力値 RSSI = -82 : TxPower = -75
218
-
218
+
219
- distance = 0.141253754462275
219
+ distance = 2.23872113856834
220
-
220
+
221
- 配列の和を求める部分
221
+ 配列の和を求める部分
222
-
222
+
223
- ma[0]=0.125892541179417 : ma[1]=0.112201845430196 : ma[2]=0.112201845430196 : ma[3]=0.112201845430196 : ma[4]=0.112201845430196
223
+ ma[0]=2.23872113856834 : ma[1]=3.54813389233576 : ma[2]=3.54813389233576 : ma[3]=3.54813389233576 : ma[4]=3.54813389233576
224
-
224
+
225
- mat = 0.574699922900202 : (参考)配列の合計(ma.Sum())=0.574699922900202
225
+ mat = 16.4312567079114 : (参考)配列の合計=16.4312567079114
226
-
226
+
227
- 平均を計算 (mat / 5)
227
+ 平均を計算 (mat / 5)
228
-
228
+
229
- mat = 0.11493998458004
229
+ mat = 3.28625134158227
230
-
230
+
231
- 配列をシフト後
231
+ 配列をシフト後
232
-
232
+
233
- ma[0]=0.141253754462275 : ma[1]=0.125892541179417 : ma[2]=0.125892541179417 : ma[3]=0.125892541179417 : ma[4]=0.125892541179417
233
+ ma[0]=2.23872113856834 : ma[1]=2.23872113856834 : ma[2]=2.23872113856834 : ma[3]=2.23872113856834 : ma[4]=2.23872113856834
234
234
 
235
235
 
236
236
 
@@ -264,15 +264,15 @@
264
264
 
265
265
  1回目
266
266
 
267
- 入力値 RSSI1 = -54 : TxPower1 = -75
267
+ 入力値 RSSI = -74 : TxPower = -75
268
-
268
+
269
- distance1 = 0.0891250938133746
269
+ distance1 = 0.891250938133746
270
270
 
271
271
  配列の和を求める部分
272
272
 
273
273
  ma1[0]=0 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
274
274
 
275
- sum1 = 0 : (参考)配列の合計(ma1.Sum())=0
275
+ sum1 = 0 : (参考)配列の合計=0
276
276
 
277
277
  平均を計算 (sum1 / 5)
278
278
 
@@ -280,95 +280,97 @@
280
280
 
281
281
  配列をシフト後
282
282
 
283
- ma1[0]=0.0891250938133746 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
283
+ ma1[0]=0.891250938133746 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
284
284
 
285
285
 
286
286
 
287
287
  2回目
288
288
 
289
- 入力値 RSSI1 = -54 : TxPower1 = -74
289
+ 入力値 RSSI = -72 : TxPower = -75
290
-
290
+
291
- distance1 = 0.1
291
+ distance1 = 0.707945784384138
292
-
292
+
293
- 配列の和を求める部分
293
+ 配列の和を求める部分
294
-
294
+
295
- ma1[0]=0.0891250938133746 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
295
+ ma1[0]=0.891250938133746 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
296
-
296
+
297
- sum1 = 0.0891250938133746 : (参考)配列の合計(ma1.Sum())=0.0891250938133746
297
+ sum1 = 0.891250938133746 : (参考)配列の合計=0.891250938133746
298
-
298
+
299
- 平均を計算 (sum1 / 5)
299
+ 平均を計算 (sum1 / 5)
300
-
300
+
301
- sum1 = 0.0178250187626749
301
+ sum1 = 0.178250187626749
302
-
302
+
303
- 配列をシフト後
303
+ 配列をシフト後
304
-
304
+
305
- ma1[0]=0.1 : ma1[1]=0.0891250938133746 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
305
+ ma1[0]=0.707945784384138 : ma1[1]=0.891250938133746 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
306
306
 
307
307
 
308
308
 
309
309
  3回目
310
310
 
311
- 入力値 RSSI1 = -54 : TxPower1 = -73
311
+ 入力値 RSSI = -79 : TxPower = -75
312
-
312
+
313
- distance1 = 0.112201845430196
313
+ distance1 = 1.58489319246111
314
-
314
+
315
- 配列の和を求める部分
315
+ 配列の和を求める部分
316
-
316
+
317
- ma1[0]=0.1 : ma1[1]=0.0891250938133746 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
317
+ ma1[0]=0.707945784384138 : ma1[1]=0.891250938133746 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
318
-
318
+
319
- sum1 = 0.206950112576049 : (参考)配列の合計(ma1.Sum())=0.189125093813375
319
+ sum1 = 1.77744691014463 : (参考)配列の合計=1.59919672251788
320
-
320
+
321
- 平均を計算 (sum1 / 5)
321
+ 平均を計算 (sum1 / 5)
322
-
322
+
323
- sum1 = 0.0413900225152099
323
+ sum1 = 0.355489382028926
324
-
324
+
325
- 配列をシフト後
325
+ 配列をシフト後
326
-
326
+
327
- ma1[0]=0.112201845430196 : ma1[1]=0.1 : ma1[2]=0.0891250938133746 : ma1[3]=0 : ma1[4]=0
327
+ ma1[0]=1.58489319246111 : ma1[1]=0.707945784384138 : ma1[2]=0.891250938133746 : ma1[3]=0 : ma1[4]=0
328
328
 
329
329
 
330
330
 
331
331
  4回目
332
332
 
333
- 入力値 RSSI1 = -54 : TxPower1 = -72
333
+ 入力値 RSSI = -81 : TxPower = -75
334
-
334
+
335
- distance1 = 0.125892541179417
335
+ distance1 = 1.99526231496888
336
-
336
+
337
- 配列の和を求める部分
337
+ 配列の和を求める部分
338
-
338
+
339
- ma1[0]=0.112201845430196 : ma1[1]=0.1 : ma1[2]=0.0891250938133746 : ma1[3]=0 : ma1[4]=0
339
+ ma1[0]=1.58489319246111 : ma1[1]=0.707945784384138 : ma1[2]=0.891250938133746 : ma1[3]=0 : ma1[4]=0
340
-
340
+
341
- sum1 = 0.342716961758781 : (参考)配列の合計(ma1.Sum())=0.301326939243571
341
+ sum1 = 3.53957929700792 : (参考)配列の合計=3.184089914979
342
-
342
+
343
- 平均を計算 (sum1 / 5)
343
+ 平均を計算 (sum1 / 5)
344
-
344
+
345
- sum1 = 0.0685433923517561
345
+ sum1 = 0.707915859401585
346
-
346
+
347
- 配列をシフト後
347
+ 配列をシフト後
348
-
348
+
349
- ma1[0]=0.125892541179417 : ma1[1]=0.112201845430196 : ma1[2]=0.1 : ma1[3]=0.0891250938133746 : ma1[4]=0
349
+ ma1[0]=1.99526231496888 : ma1[1]=1.58489319246111 : ma1[2]=0.707945784384138 : ma1[3]=0.891250938133746 : ma1[4]=0
350
350
 
351
351
 
352
352
 
353
353
  5回目
354
354
 
355
- 入力値 RSSI1 = -54 : TxPower1 = -71
355
+ 入力値 RSSI = -84 : TxPower = -75
356
-
356
+
357
- distance1 = 0.141253754462275
357
+ distance1 = 2.81838293126445
358
-
358
+
359
- 配列の和を求める部分
359
+ 配列の和を求める部分
360
-
360
+
361
- ma1[0]=0.125892541179417 : ma1[1]=0.112201845430196 : ma1[2]=0.1 : ma1[3]=0.0891250938133746 : ma1[4]=0
361
+ ma1[0]=1.99526231496888 : ma1[1]=1.58489319246111 : ma1[2]=0.707945784384138 : ma1[3]=0.891250938133746 : ma1[4]=0
362
-
362
+
363
- sum1 = 0.495762872774744 : (参考)配列の合計(ma1.Sum())=0.427219480422988
363
+ sum1 = 5.88726808934946 : (参考)配列の合計=5.17935222994788
364
-
364
+
365
- 平均を計算 (sum1 / 5)
365
+ 平均を計算 (sum1 / 5)
366
-
366
+
367
- sum1 = 0.0991525745549487
367
+ sum1 = 1.17745361786989
368
-
368
+
369
- 配列をシフト後
369
+ 配列をシフト後
370
-
370
+
371
- ma1[0]=0.141253754462275 : ma1[1]=0.125892541179417 : ma1[2]=0.112201845430196 : ma1[3]=0.1 : ma1[4]=0.0891250938133746
371
+ ma1[0]=2.81838293126445 : ma1[1]=1.99526231496888 : ma1[2]=1.58489319246111 : ma1[3]=0.707945784384138 : ma1[4]=0.891250938133746
372
+
373
+
372
374
 
373
375
 
374
376
 
@@ -380,9 +382,9 @@
380
382
 
381
383
  これは2021/07/25 10:16に回答に追記した部分で指摘しています。
382
384
 
383
- > 例)3回目の計算の場合、配列の合計値は0.189125093813375となります。
385
+ > 例)3回目の計算の場合、配列の合計値は1.59919672251788となります。
384
-
386
+
385
- > しかし、平均を求めるためのsum1は前回計算で求めたsum1の0.0178250187626749+配列合計の0.1891250938133750.206950112576049となってしまっています。
387
+ > しかし、平均を求めるためのsum1は前回計算で求めたsum1の0.178250187626749+配列合計の1.599196722517881.77744691014463となってしまっています。
386
388
 
387
389
 
388
390
 

2

追記

2021/07/30 03:13

投稿

YAmaGNZ
YAmaGNZ

スコア10514

test CHANGED
@@ -109,3 +109,289 @@
109
109
  なので3回目は2回目で求めた平均の`0.2`にma1の合計の3が加算され`3.2/5`という計算になっています。
110
110
 
111
111
  また、求めたい平均は1回目から1、1.5、2となるのではないですか?
112
+
113
+
114
+
115
+ ---
116
+
117
+ ### さらに追記
118
+
119
+ 2021/07/30 02:49編集時点でのソースでの検証です。
120
+
121
+
122
+
123
+ B1計算部分の動作は以下のようになります。
124
+
125
+ ```
126
+
127
+ 1回目
128
+
129
+ 入力値 RSSI = -54 : TxPower = -75
130
+
131
+ distance = 0.0891250938133746
132
+
133
+ 配列の和を求める部分
134
+
135
+ ma[0]=0 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
136
+
137
+ mat = 0 : (参考)配列の合計(ma.Sum())=0
138
+
139
+ 平均を計算 (mat / 5)
140
+
141
+ mat = 0
142
+
143
+ 配列をシフト後
144
+
145
+ ma[0]=0.0891250938133746 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
146
+
147
+
148
+
149
+ 2回目
150
+
151
+ 入力値 RSSI = -54 : TxPower = -74
152
+
153
+ distance = 0.1
154
+
155
+ 配列の和を求める部分
156
+
157
+ ma[0]=0.0891250938133746 : ma[1]=0 : ma[2]=0 : ma[3]=0 : ma[4]=0
158
+
159
+ mat = 0.0891250938133746 : (参考)配列の合計(ma.Sum())=0.0891250938133746
160
+
161
+ 平均を計算 (mat / 5)
162
+
163
+ mat = 0.0178250187626749
164
+
165
+ 配列をシフト後
166
+
167
+ ma[0]=0.1 : ma[1]=0.0891250938133746 : ma[2]=0.0891250938133746 : ma[3]=0.0891250938133746 : ma[4]=0.0891250938133746
168
+
169
+
170
+
171
+ 3回目
172
+
173
+ 入力値 RSSI = -54 : TxPower = -73
174
+
175
+ distance = 0.112201845430196
176
+
177
+ 配列の和を求める部分
178
+
179
+ ma[0]=0.1 : ma[1]=0.0891250938133746 : ma[2]=0.0891250938133746 : ma[3]=0.0891250938133746 : ma[4]=0.0891250938133746
180
+
181
+ mat = 0.456500375253498 : (参考)配列の合計(ma.Sum())=0.456500375253498
182
+
183
+ 平均を計算 (mat / 5)
184
+
185
+ mat = 0.0913000750506996
186
+
187
+ 配列をシフト後
188
+
189
+ ma[0]=0.112201845430196 : ma[1]=0.1 : ma[2]=0.1 : ma[3]=0.1 : ma[4]=0.1
190
+
191
+
192
+
193
+ 4回目
194
+
195
+ 入力値 RSSI = -54 : TxPower = -72
196
+
197
+ distance = 0.125892541179417
198
+
199
+ 配列の和を求める部分
200
+
201
+ ma[0]=0.112201845430196 : ma[1]=0.1 : ma[2]=0.1 : ma[3]=0.1 : ma[4]=0.1
202
+
203
+ mat = 0.512201845430196 : (参考)配列の合計(ma.Sum())=0.512201845430196
204
+
205
+ 平均を計算 (mat / 5)
206
+
207
+ mat = 0.102440369086039
208
+
209
+ 配列をシフト後
210
+
211
+ ma[0]=0.125892541179417 : ma[1]=0.112201845430196 : ma[2]=0.112201845430196 : ma[3]=0.112201845430196 : ma[4]=0.112201845430196
212
+
213
+
214
+
215
+ 5回目
216
+
217
+ 入力値 RSSI = -54 : TxPower = -71
218
+
219
+ distance = 0.141253754462275
220
+
221
+ 配列の和を求める部分
222
+
223
+ ma[0]=0.125892541179417 : ma[1]=0.112201845430196 : ma[2]=0.112201845430196 : ma[3]=0.112201845430196 : ma[4]=0.112201845430196
224
+
225
+ mat = 0.574699922900202 : (参考)配列の合計(ma.Sum())=0.574699922900202
226
+
227
+ 平均を計算 (mat / 5)
228
+
229
+ mat = 0.11493998458004
230
+
231
+ 配列をシフト後
232
+
233
+ ma[0]=0.141253754462275 : ma[1]=0.125892541179417 : ma[2]=0.125892541179417 : ma[3]=0.125892541179417 : ma[4]=0.125892541179417
234
+
235
+
236
+
237
+ ```
238
+
239
+
240
+
241
+ 配列のシフト処理がおかしいので配列の値が正しくありません。
242
+
243
+ 2021/07/21 20:31のコメントにて
244
+
245
+ B1のバッファ処理がおかしいので2回目以降の値がおかしくなります。(前回のソースだとここは正しかったはず)
246
+
247
+ と指摘している内容です。
248
+
249
+
250
+
251
+ 平均を求める部分に関してはmatはローカル変数として定義され毎回0からの加算となるので
252
+
253
+ 平均の計算自体は正常に計算されます。
254
+
255
+ (今回求めたdistanceが平均に含まれないのは前から疑問として投げかけた部分なので無視)
256
+
257
+
258
+
259
+
260
+
261
+ B2計算部分の動作は以下のようになります。(B3も同じなので省略します)
262
+
263
+ ```
264
+
265
+ 1回目
266
+
267
+ 入力値 RSSI1 = -54 : TxPower1 = -75
268
+
269
+ distance1 = 0.0891250938133746
270
+
271
+ 配列の和を求める部分
272
+
273
+ ma1[0]=0 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
274
+
275
+ sum1 = 0 : (参考)配列の合計(ma1.Sum())=0
276
+
277
+ 平均を計算 (sum1 / 5)
278
+
279
+ sum1 = 0
280
+
281
+ 配列をシフト後
282
+
283
+ ma1[0]=0.0891250938133746 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
284
+
285
+
286
+
287
+ 2回目
288
+
289
+ 入力値 RSSI1 = -54 : TxPower1 = -74
290
+
291
+ distance1 = 0.1
292
+
293
+ 配列の和を求める部分
294
+
295
+ ma1[0]=0.0891250938133746 : ma1[1]=0 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
296
+
297
+ sum1 = 0.0891250938133746 : (参考)配列の合計(ma1.Sum())=0.0891250938133746
298
+
299
+ 平均を計算 (sum1 / 5)
300
+
301
+ sum1 = 0.0178250187626749
302
+
303
+ 配列をシフト後
304
+
305
+ ma1[0]=0.1 : ma1[1]=0.0891250938133746 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
306
+
307
+
308
+
309
+ 3回目
310
+
311
+ 入力値 RSSI1 = -54 : TxPower1 = -73
312
+
313
+ distance1 = 0.112201845430196
314
+
315
+ 配列の和を求める部分
316
+
317
+ ma1[0]=0.1 : ma1[1]=0.0891250938133746 : ma1[2]=0 : ma1[3]=0 : ma1[4]=0
318
+
319
+ sum1 = 0.206950112576049 : (参考)配列の合計(ma1.Sum())=0.189125093813375
320
+
321
+ 平均を計算 (sum1 / 5)
322
+
323
+ sum1 = 0.0413900225152099
324
+
325
+ 配列をシフト後
326
+
327
+ ma1[0]=0.112201845430196 : ma1[1]=0.1 : ma1[2]=0.0891250938133746 : ma1[3]=0 : ma1[4]=0
328
+
329
+
330
+
331
+ 4回目
332
+
333
+ 入力値 RSSI1 = -54 : TxPower1 = -72
334
+
335
+ distance1 = 0.125892541179417
336
+
337
+ 配列の和を求める部分
338
+
339
+ ma1[0]=0.112201845430196 : ma1[1]=0.1 : ma1[2]=0.0891250938133746 : ma1[3]=0 : ma1[4]=0
340
+
341
+ sum1 = 0.342716961758781 : (参考)配列の合計(ma1.Sum())=0.301326939243571
342
+
343
+ 平均を計算 (sum1 / 5)
344
+
345
+ sum1 = 0.0685433923517561
346
+
347
+ 配列をシフト後
348
+
349
+ ma1[0]=0.125892541179417 : ma1[1]=0.112201845430196 : ma1[2]=0.1 : ma1[3]=0.0891250938133746 : ma1[4]=0
350
+
351
+
352
+
353
+ 5回目
354
+
355
+ 入力値 RSSI1 = -54 : TxPower1 = -71
356
+
357
+ distance1 = 0.141253754462275
358
+
359
+ 配列の和を求める部分
360
+
361
+ ma1[0]=0.125892541179417 : ma1[1]=0.112201845430196 : ma1[2]=0.1 : ma1[3]=0.0891250938133746 : ma1[4]=0
362
+
363
+ sum1 = 0.495762872774744 : (参考)配列の合計(ma1.Sum())=0.427219480422988
364
+
365
+ 平均を計算 (sum1 / 5)
366
+
367
+ sum1 = 0.0991525745549487
368
+
369
+ 配列をシフト後
370
+
371
+ ma1[0]=0.141253754462275 : ma1[1]=0.125892541179417 : ma1[2]=0.112201845430196 : ma1[3]=0.1 : ma1[4]=0.0891250938133746
372
+
373
+
374
+
375
+ ```
376
+
377
+ B1の動作と違い配列のシフト処理は正常に動作します。
378
+
379
+ しかし、sum1のクリアが無いため、平均を正常に求めることが出来ません。
380
+
381
+ これは2021/07/25 10:16に回答に追記した部分で指摘しています。
382
+
383
+ > 例)3回目の計算の場合、配列の合計値は0.189125093813375となります。
384
+
385
+ > しかし、平均を求めるためのsum1は前回計算で求めたsum1の0.0178250187626749+配列合計の0.189125093813375の0.206950112576049となってしまっています。
386
+
387
+
388
+
389
+ また、質問を編集された
390
+
391
+
392
+
393
+ > デバッグしてみた結果、3つある配列ma、ma1,ma2の中身、5つ全部がmaはdistance、ma1はdistance1、ma2はdistance2の値になっていました。同じ値を5回足して5で割っている状態でした。
394
+
395
+
396
+
397
+ という現象は見受けられません。

1

追記

2021/07/30 02:35

投稿

YAmaGNZ
YAmaGNZ

スコア10514

test CHANGED
@@ -47,3 +47,65 @@
47
47
 
48
48
 
49
49
  また、固定長の配列を使うよりList<T>を使用したほうがコードがすっきりするかと思います。
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+ ### 追記
58
+
59
+
60
+
61
+ ```C#
62
+
63
+ //sum1=0;
64
+
65
+ for (int i = 0; i < 5; i++)
66
+
67
+ {
68
+
69
+ sum1 += ma1[i];
70
+
71
+ }
72
+
73
+ sum1 /= 5;
74
+
75
+
76
+
77
+ for (int i=4; i>0; i--)
78
+
79
+ {
80
+
81
+ ma1[i] = ma1[i - 1];
82
+
83
+ }
84
+
85
+ ma1[0] = distance1;
86
+
87
+ ```
88
+
89
+ この部分がどう動いているか
90
+
91
+ distance1は仮定の値、ma1の値はsum1を計算するときの値とします。
92
+
93
+
94
+
95
+ |回数|distance1|ma1[0]|ma1[1]|ma1[2]|ma1[3]|ma1[4]|sum1|
96
+
97
+ |:--:|--:|--:|--:|--:|--:|--:|--:|
98
+
99
+ |1|1|0|0|0|0|0|0|
100
+
101
+ |2|2|1|0|0|0|0|0.2|
102
+
103
+ |3|3|2|1|0|0|0|0.64|
104
+
105
+
106
+
107
+ sum1は`(sum1+ma1[0]+ma1[1]+ma1[2]+ma1[3]+ma1[4])/5`となっています。
108
+
109
+ なので3回目は2回目で求めた平均の`0.2`にma1の合計の3が加算され`3.2/5`という計算になっています。
110
+
111
+ また、求めたい平均は1回目から1、1.5、2となるのではないですか?