-1
私はこのコードを持っていると私は4つの部分にテーブルinp[2560]
をpartionしたいとパートごとに私はこれを計算したい:forループを使用してテーブルの一部を使用する方法はありますか。
MI = calcul__min(inp,640);
MA = calcul__max(inp,640);
MOY = calcul__moy(inp,640);
ectt = calcul__ect(inp,640);
私はこのためにforループを使用する方法がわかりません。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define ORDER 65
#define NP 2560
float inp[2560];
float ED1, ED2, ED3, ED4, Ap4;
float d1, d2, d3, d4, a4, total;
int i;
double calcul__max(float tab[], int N)
{
double max;
int i;
for (i = 0; i < N; i++)
{
if(tab[i]>max)
max=tab[i];
}
return max;
}
double calcul__min(float tab[], int N)
{
double min;
int i;
for (i = 0; i < N; i++)
{
if(tab[i]<min)
min=tab[i];
}
return min;
}
double calcul__moy(float tab[],int N)
{
double moyenne,somme;
int i;
for (i = 0; i < N; i++)
{
somme = somme + tab[i];
moyenne = somme /640;
}
return moyenne;
}
float calcul__ect(float tab[], int N)
{
double moyenne, TM, som, ec, ect;
moyenne = calcul__moy(inp,640);
int i;
for (i = 0; i < N; i++)
{
TM = tab[i] - moyenne;
TM *= TM;
som += TM;
}
ec = som/639;
ect = sqrt(ec);
return ect;
}
struct Calculstat
{
float Ea;
float amplitudemin;
float ecarttype;
float Ed2;
float amplitudemax;
};
filter(int ord, float *a, float *b, int np, float *x, float *y) {
int i, j;
y[0] = b[0] * x[0];
for (i = 1; i < ord + 1; i++) {
y[i] = 0.0;
for (j = 0; j < i + 1; j++)
y[i] = y[i] + b[j] * x[i-j];
for (j = 0; j < i; j++)
y[i] = y[i] - a[j+1] * y[i-j-1];
}
for (i = ord + 1; i < np + 1; i++) {
y[i] = 0.0;
for (j = 0; j < ord + 1; j++)
y[i] = y[i] + b[j] * x[i-j];
for (j = 0; j < ord; j++)
y[i] = y[i] - a[j+1] * y[i-j-1];
}
}
main()
{
float x[NP]= { -84.786,...};
float y[NP], a[ORDER+1], b[ORDER+1];
int i, j;
b[0] = -0.005574892;
// [...]
b[65] = -0.005574892;
a[0] = 0;
// [...]
a[65] = 0;
filter(ORDER, a, b, NP, x, y);
for (i = 0; i < NP; i++)
{
x[i]=y[NP-i-1];
}
filter(ORDER,a,b,NP,x,y);
for (i=0;i<NP;i++)
{
x[i] = y[NP-i-1];
}
for (i = 0; i < NP; i++)
{
y[i] = x[i];
}
for (i = 0; i < NP; i++)
{
//printf("%f\n",y[i]);
inp[i]=y[i];
}
double MA,MI,MOY;
float ectt;
MI = calcul__min(inp,640);
MA = calcul__max(inp,640);
MOY = calcul__moy(inp,640);
ectt = calcul__ect(inp,640);
printf("Le min de tableau est ""%f\n",MI);
printf("Le max de tableau est ""%f\n",MA);
printf ("la moyenne est de ""%g\n", MOY);
printf ("ecart type est ""%g\n", ectt);
}
このコードにはforループがかなりあります。どちらがあなたに問題を抱えていますか、そしてあなたはどんな問題を抱えていますか? – interjay
@interjay私の問題はherrです inp [i] = y [i]; } double MA、MI、MOY; 浮動小数点; MI = calcul__min(inp、640); MA = calcul__max(inp、640); MOY = calcul__moy(inp、640); ectt = calcul__ect(inp、640); printf( "Le min de tableau est" "%f \ n"、MI); printf( "Le max de tableau est" "%f \ n"、MA); printf( "la moyenne est de" "%g \ n"、MOY); printf( "ecart type est" "%g \ n"、ectt); – meri