質問編集履歴
2
各関数の用途と問題箇所をコード中に記載しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
return K;
|
32
32
|
}
|
33
33
|
|
34
|
-
上記のコードのように自作関数で配列を返して、main関数で変数に代入してその変数を用いて後の計算を行いたいのですが、コアダンプして上手くいきません。改善策の検討がつかないのですが、
|
34
|
+
上記のコードのように自作関数で配列を返して、main関数で変数に代入してその変数を用いて後の計算を行いたいのですが、コアダンプして上手くいきません。改善策の検討がつかないのですが、どなたか分かる方、ご教授いただけないでしょうか?詳しいコードは下記の通りです。C言語1がメインのコード、C言語2が入力ファイルを作るコードです。
|
35
35
|
よろしくお願いいたします。
|
36
36
|
### 発生している問題・エラーメッセージ
|
37
37
|
|
1
各関数の用途を記載しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,23 +60,22 @@
|
|
60
60
|
|
61
61
|
char datar[256], datai[256];
|
62
62
|
|
63
|
-
float ar1[N], ai1[N]
|
63
|
+
float ar1[N], ai1[N];
|
64
|
-
|
64
|
+
|
65
|
-
double tempr1[N], tempi1[N]
|
65
|
+
double tempr1[N], tempi1[N];
|
66
66
|
|
67
67
|
double pwr1, pwi1;
|
68
68
|
|
69
69
|
double dcnt[N];
|
70
70
|
|
71
|
-
double S1r1[N], S2r1[N], S3r1[N], S4r1[N]
|
71
|
+
double S1r1[N], S2r1[N], S3r1[N], S4r1[N];
|
72
72
|
double S1i1[N], S2i1[N], S3i1[N], S4i1[N];
|
73
|
-
double Myu1r1[N], Myu2r1[N], Myu3r1[N], Myu4r1[N]
|
73
|
+
double Myu1r1[N], Myu2r1[N], Myu3r1[N], Myu4r1[N];
|
74
74
|
double Myu1i1[N], Myu2i1[N], Myu3i1[N], Myu4i1[N];
|
75
|
-
double M1r[N], M2r[N], M3r[N], M4r[N]
|
75
|
+
double M1r[N], M2r[N], M3r[N], M4r[N];
|
76
|
-
double M1i[N], M2i[N], M3i[N], M4i[N]
|
76
|
+
double M1i[N], M2i[N], M3i[N], M4i[N];
|
77
77
|
|
78
78
|
double* K = NULL;
|
79
|
-
double Kr[N], Ki[N];
|
80
79
|
|
81
80
|
FILE *fp, *fp1, *fp2, *fp3;
|
82
81
|
|
@@ -96,9 +95,6 @@
|
|
96
95
|
{
|
97
96
|
ar1[i] = 0.0;
|
98
97
|
ai1[i] = 0.0;
|
99
|
-
|
100
|
-
Kr[i] = 0.0;
|
101
|
-
Ki[i] = 0.0;
|
102
98
|
|
103
99
|
M1r[i] = 0.0;
|
104
100
|
M1i[i] = 0.0;
|
@@ -117,14 +113,11 @@
|
|
117
113
|
S3i1[i] = 0.0;
|
118
114
|
S4r1[i] = 0.0;
|
119
115
|
S4i1[i] = 0.0;
|
120
|
-
S6r1[i] = 0.0;
|
121
116
|
|
122
117
|
dcnt[i] = 0.0;
|
123
118
|
|
124
119
|
tempr1[i] = 0.0;
|
125
120
|
tempi1[i] = 0.0;
|
126
|
-
tempr2[i] = 0.0;
|
127
|
-
tempi2[i] = 0.0;
|
128
121
|
|
129
122
|
Myu1r1[i] = 0.0;
|
130
123
|
Myu1i1[i] = 0.0;
|
@@ -134,7 +127,6 @@
|
|
134
127
|
Myu3i1[i] = 0.0;
|
135
128
|
Myu4r1[i] = 0.0;
|
136
129
|
Myu4i1[i] = 0.0;
|
137
|
-
Myu6r1[i] = 0.0;
|
138
130
|
}
|
139
131
|
|
140
132
|
pwr1 = 0.0;
|
@@ -152,12 +144,6 @@
|
|
152
144
|
{
|
153
145
|
printf("\rProcessing %10d th frame",n+1);
|
154
146
|
|
155
|
-
|
156
|
-
/* for(i = 0; i < N; i++)
|
157
|
-
{
|
158
|
-
fread(&ar1[i], sizeof(float), 1, fp1);
|
159
|
-
fread(&ai1[i], sizeof(float), 1, fp1);
|
160
|
-
}*/
|
161
147
|
|
162
148
|
for(i = 0; i < N; i++)
|
163
149
|
{
|
@@ -205,8 +191,6 @@
|
|
205
191
|
S4r1[i] += pow((double)pwr1, 4.0);
|
206
192
|
S4i1[i] += pow((double)pwi1, 4.0);
|
207
193
|
|
208
|
-
S6r1[i] += pow((double)pwr1, 6.0);
|
209
|
-
|
210
194
|
dcnt[i] += 1.0;
|
211
195
|
}
|
212
196
|
}
|
@@ -228,11 +212,9 @@
|
|
228
212
|
|
229
213
|
Myu4r1[i] = S4r1[i] / dcnt[i];
|
230
214
|
Myu4i1[i] = S4i1[i] / dcnt[i];
|
231
|
-
|
232
|
-
Myu6r1[i] = S6r1[i] / dcnt[i];
|
233
|
-
}
|
215
|
+
}
|
234
|
-
|
216
|
+
|
235
|
-
K = Kurtosis(Myu1r1, Myu2r1, Myu3r1, Myu4r1, N);
|
217
|
+
K = Kurtosis(Myu1r1, Myu2r1, Myu3r1, Myu4r1, N); //エラーがでる箇所
|
236
218
|
for(i = 0; i < N; i++)
|
237
219
|
printf("%f\n", K[i]);
|
238
220
|
|
@@ -241,7 +223,8 @@
|
|
241
223
|
return 0;
|
242
224
|
|
243
225
|
}
|
226
|
+
|
244
|
-
|
227
|
+
//FFTの計算
|
245
228
|
int fft1(ar,ai,n,iter,flag)
|
246
229
|
float ar[],ai[];
|
247
230
|
int n, iter, flag;
|
@@ -349,7 +332,7 @@
|
|
349
332
|
return(0);
|
350
333
|
}
|
351
334
|
|
352
|
-
|
335
|
+
//窓関数の処理を行う関数
|
353
336
|
int window_func(frame,n)
|
354
337
|
float frame[];
|
355
338
|
int n;
|
@@ -375,6 +358,7 @@
|
|
375
358
|
return(0);
|
376
359
|
}
|
377
360
|
|
361
|
+
//問題としている自作関数
|
378
362
|
double* Kurtosis(double Myu1[], double Myu2[], double Myu3[], double Myu4[], int N)
|
379
363
|
{
|
380
364
|
int i;
|
@@ -382,8 +366,6 @@
|
|
382
366
|
double top[N], bottom[N];
|
383
367
|
double* K = (double*)malloc(N);
|
384
368
|
|
385
|
-
|
386
|
-
|
387
369
|
for(i = 0; i < N; i++)
|
388
370
|
{
|
389
371
|
M1[i] = 0.0;
|