a Write a function definition for a userdefined function tha
a)
Write a function definition for a user-defined function that calculates the (floating-point double) mean of a specified column in a 2-D array that has NROWS rows and NCOLS columns. (NROWS and NCOLS are pre-defined symbolic constants) The parameters should be the double array and the desired column, as specified in the following function prototype: double col_mean(double x[NROWS, NCOLS], int col);
b)
Same as #a, but calculating the standard deviation rather than the mean
Xi avg 1Solution
a) To find Mean of given column in given matrix
// Here I am writing all the code to better understanding.
#include<stdio.h>
#include<math.h>
#define NROWS 3 // Fixing No of rows is 3
#define NCOLS 3 // Fixing No of columns is 3
double col_mean (double mat[NROWS][NCOLS], int col); // funtion declaration
void main(){
double matrix[NROWS][NCOLS] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}; // Take constant 2d-mtrix
int col = 1; // Assume column 1
double mean = col_mean(matrix,col);
printf(\" Mean of column is :: %lf\ \", mean);
}
double col_mean (double mat[NROWS][NCOLS], int col){
int i,count = 0,sum= 0;
for (i= 0; i<NROWS; i++){ // Iterating the loop
sum += mat[i][col]; // sum of all elements
count +=1;
}
return (sum/count); // returning mean of elements
}
// Sample Output ::
// Mean : 5.00
b) To find standard deviation of column in given matrix
// Here also I added all the code to get things clearly
#include<stdio.h>
#include<math.h>
#define NROWS 3 // Fixing No of rows is 3
#define NCOLS 3 // Fixing No of columns is 3
double col_mean (double mat[NROWS][NCOLS], int col);
double x_mean (double mat[NROWS][NCOLS], int col); // Mean funtion declaration
double x_sd (double mat[NROWS][NCOLS], int mean,int col); // Sd function declaration
void main(){
double matrix[NROWS][NCOLS] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}; // Take constant 2d-mtrix
int col = 1; // Assume column 1
double mean = x_mean(matrix,col); // Finding the mean
double standardDeviation = x_sd(matrix,col,mean); // Finding the sd
printf(\" standardDeviation of column is :: %lf\ \", standardDeviation);
}
double x_mean (double mat[NROWS][NCOLS], int col){ // This fuunction is to find the mean of the column
int i,count = 0,sum= 0;
for (i= 0; i<NROWS; i++){
sum += mat[i][col];
count ++;
}
return (sum/count);
}
double x_sd (double mat[NROWS][NCOLS], int mean,int col){ // This fuunction is to find the standard deviation of the column
int i,count = 0,sum= 0,element,difference;
for (i = 0; i<NROWS; i++){
element = mat[i][col];
sum += (element-mean) * (element-mean); // Squaring of the difference
count ++; // finding N
}
return sqrt(sum/count); // Square root function
}
// Sample output ::
// Mean : 5.0
// Deviation : 5.477226

