c言語のメモリの動的確保について

c

1#include <stdio.h>2#include <stdlib.h>3#include <math.h>4#include <time.h>5#include <string.h>6 7int fft1();8int window_func();9int cmpnum();10 11void swap(float *x, float *y);12 13double* freq(int N);14double* CalcPower(double data[], int N);15double Threshold_kurtosis(double M[], int N);16double Threshold_crossfreq(double median, double sub[], int num);17double* Kurtosis(double a[], double b[], double c[], double d[], int e);18 19double calcMedian();20double GetRandom(int min, int max);21double pulse(int frame);22 23int main(int argc,const char *argv[])24{25 int N = 1024;26 int i, j, k, n, n_frame, iter, flag;27 28 float ar1[N], ai1[N], ar2[N], ai2[N];29 30 double pwr1, pwi1, pwr2, pwi2;31 32 double dcnt;33 34 double S1r1[N], S2r1[N], S3r1[N], S4r1[N], S6r1[N];35 double S1i1[N], S2i1[N], S3i1[N], S4i1[N];36 double Myu1r1[N], Myu2r1[N], Myu3r1[N], Myu4r1[N], Myu6r1[N];37 double Myu1i1[N], Myu2i1[N], Myu3i1[N], Myu4i1[N];38 39 double S1r2[N], S2r2[N], S3r2[N], S4r2[N], S6r2[N];40 double S1i2[N], S2i2[N], S3i2[N], S4i2[N];41 double Myu1r2[N], Myu2r2[N], Myu3r2[N], Myu4r2[N], Myu6r2[N];42 double Myu1i2[N], Myu2i2[N], Myu3i2[N], Myu4i2[N];43 44 double sub_Myu1r[N], sub_Myu2r[N], sub_Myu3r[N], sub_Myu4r[N];45 double sub_Myu1i[N], sub_Myu2i[N], sub_Myu3i[N], sub_Myu4i[N];46 47 double Myu21[N], Myu22[N], sub_Myu2[N];48 double sub_myu2[N], b[N], h[N], h1[N]; 49 double median, median1;50 double d[N], d1[N], s;51 double sub_d[N];52 53 double sub_d_neighbor[N], sub_d_neighbor1[N];54 double v[N], v1[N], sub_v[N], sub_v1[N];55 56 double modi_Myu2_freq[N];57 58 double Mr[N], Mi[N], Ma[N], Mb[N], Mc[N];59 double Fr[N], Fi[N];60 double sum_kr, sum_ki, sum_kc;61 double s_k, s_kr, s_ki, s_ka, s_kb, s_kc;62 double br[N], bi[N], ba[N], bb[N], qr[N], qa[N];63 double xr[N], xi[N], xa[N], xb[N], qi[N], qb[N];64 65 double modi_Myu2_kur1[N]; 66 double modi_Myu2_kur2[N]; 67 68 double com[N];69 double modi_Myu2_com[N]; 70 71 double* fq = NULL;72 73 double* Kr = NULL;74 double* Ki = NULL;75 double* Ka = NULL;76 double* Kb = NULL;77 78 double* Myu21_power = NULL;79 double* sub_Myu2_power = NULL;80 double* modi_power_com = NULL; 81 double* modi_power_kur1 = NULL;82 double* modi_power_kur2 = NULL;83 double* modi_power_freq = NULL;84 85 FILE *fp, *fp1, *fp2, *fp3;86 87 modi_power_freq = CalcPower(sub_Myu2, N);88 89 90 Kr = Kurtosis(Myu1r1, Myu2r1, Myu3r1, Myu4r1, N); 91 Ki = Kurtosis(Myu1i1, Myu2i1, Myu3i1, Myu4i1, N);92 93 94 Myu21_power = CalcPower(Myu21, N);95 sub_Myu2_power = CalcPower(sub_Myu2, N);96 97 Ka = Kurtosis(Myu1r2, Myu2r2, Myu3r2, Myu4r2, N); 98 Kb = Kurtosis(Myu1i2, Myu2i2, Myu3i2, Myu4i2, N);99 100 modi_power_kur1 = CalcPower(modi_Myu2_kur1, N);101 modi_power_kur2 = CalcPower(modi_Myu2_kur2, N);102 103 modi_power_com = CalcPower(modi_Myu2_com, N);104 105 106 free(fq);107 free(Kr);108 free(Ki);109 free(Ka);110 free(Kb);111 free(Myu21_power);112 free(sub_Myu2_power);113 free(modi_power_com);114 free(modi_power_freq);115 free(modi_power_kur1);116 free(modi_power_kur2);117 118 return 0;119 120}121 122double* CalcPower(double data[], int N)123{124 int i;125 double av[N];126 double* power = (double*)malloc(N * sizeof(double));127 128 for(i = 0; i < N; i++)129 av[i] = 0.0;130 131 for(i = 0; i < N; i++)132 {133 av[i] = data[i] / 1000000;134 power[i] = 10 * log10(av[i]);135 }136 137 return power;138}139 140double* Kurtosis(double Myu1[], double Myu2[], double Myu3[], double Myu4[], int N)141{142 int i;143 double M1[N], M2[N], M3[N], M4[N];144 double top[N], bottom[N];145 double* K = (double*)malloc(N * sizeof(double));146 147 for(i = 0; i < N; i++)148 {149 M1[i] = 0.0;150 M2[i] = 0.0;151 M3[i] = 0.0;152 M4[i] = 0.0;153 154 top[i] = 0.0;155 bottom[i] = 0.0;156 }157 158 for(i = 0; i < N; i++)159 {160 M1[i] = 4.0 * Myu3[i] * Myu1[i];161 162 M2[i] = 6.0 * Myu2[i] * Myu1[i] * Myu1[i];163 164 M3[i] = 3.0 * Myu1[i] * Myu1[i] * Myu1[i] * Myu1[i];165 166 M4[i] = Myu2[i] - (Myu1[i] * Myu1[i]);167 }168 169 for(i = 0; i < N; i++)170 {171 top[i] = Myu4[i] - M1[i] + M2[i] - M3[i]; 172 bottom[i] = M4[i] * M4[i];173 }174 175 for(i = 0; i < N; i++)176 {177 K[i] = top[i] / bottom[i]; 178 }179 180 return K;181 182}183 184double* freq(int N)185{186 int i;187 double* fq = (double*)malloc(N * sizeof(double));188 189 for(i = 0; i < N; i++)190 fq[i] = (875.0 + 6000.0 + (30.0/1024.0) * i) / 1000.0;191 192 return fq;193 194}195

コメントを投稿

0 コメント