簡單向量計算:相加,相減,點乘

C-Free 5.0, mingw5

/* vec.c - 2019-10-09 build 3*/

#include<stdio.h>

void v_sho(double* vector0, int length)
{
	int i;
	printf("\nans=\n");
	for(i=0;i<length;i++)
	{
		printf("%f ",vector0[i]);
	}
	printf("\n\n");
}

void v_dot(double* vector0, double* vector1, int length)
{
	int i;
	for(i=0;i<length;i++)
	{
		vector0[i] = vector0[i] * vector1[i];
	}
	return;
}

void v_sca(double* vector, double coeff, int length)
{
	int i;
	for(i=0;i<length;i++)
	{
		vector[i] = vector[i] * coeff;
	}
	return;
}

void v_sub(double* vector0, double* vector1, int length)
{
	int i;
	for(i=0;i<length;i++)
	{
		vector0[i] = vector0[i] - vector1[i];
	}
	return;
}

void v_add(double* vector0, double* vector1, int length)
{
	int i;
	for(i=0;i<length;i++)
	{
		vector0[i] = vector0[i] + vector1[i];
	}
	return;
}

double sigma(double* vector, int length)
{
    int i;
    double sum = 0;
    double ret = 0;
    for(i=0;i<length;i++)
    {
        sum = sum + vector[i];
    }
    ret = sum;
    return ret;
}

double mean(double* vector, int length)
{
    double sum = 0;
    double ret = 0;
    sum = sigma(vector,length);
    ret = sum / length;
    return ret;
}

double max(double* vector, int length)
{
    int i;
    double ret;
    ret = vector[0];
    for(i=0;i<length;i++)
    {
        if(ret<vector[i])
            ret = vector[i];
    }
    return ret;
}

double min(double* vector, int length)
{
    int i;
    double ret;
    ret = vector[0];
    for(i=0;i<length;i++)
    {
        if(ret>vector[i])
            ret = vector[i];
    }
    return ret;
}

double rms(double* vector, int length)
{
    int i;
    double pow;
    double sum = 0;
    double ret = 0;
    for(i=0;i<length;i++)
    {
        pow = vector[i] * vector[i] / length;
        sum = sum + pow;
    }
    ret = sqrt(sum);
    return ret;
}

int main()
{
    double vector[16] = {1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4};
    printf("sigma=%f\n",sigma(vector,16));
    printf("mean=%f\n",mean(vector,16));
    printf("max=%f\n",max(vector,16));
    printf("min=%f\n",min(vector,16));
    printf("rms=%f\n",rms(vector,16));
    v_sca(vector,5,16);
    v_sho(vector,16);
    printf("sigma=%f\n",sigma(vector,16));
    v_add(vector,vector,16);
    v_sho(vector,16);
    printf("sigma=%f\n",sigma(vector,16));
    v_sub(vector,vector,16);
    v_sho(vector,16);
    printf("sigma=%f\n",sigma(vector,16));
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章