用C++代码编写一个高斯核生成函数
时间: 2024-05-01 11:17:22 浏览: 49
好的,可以使用下面的代码实现高斯核生成函数:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265358979323846
double **generateGaussianKernel(int size, double sigma);
int main() {
int size = 5; // kernel size
double sigma = 1.0; // Gaussian standard deviation
// generate Gaussian kernel
double **kernel = generateGaussianKernel(size, sigma);
// print kernel
printf("Gaussian kernel:\n");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
printf("%lf ", kernel[i][j]);
}
printf("\n");
}
// free memory
for (int i = 0; i < size; i++) {
free(kernel[i]);
}
free(kernel);
return 0;
}
// function to generate Gaussian kernel
double **generateGaussianKernel(int size, double sigma) {
int center = size / 2;
double sum = 0.0;
double **kernel = (double **) malloc(sizeof(double *) * size);
for (int i = 0; i < size; i++) {
kernel[i] = (double *) malloc(sizeof(double) * size);
for (int j = 0; j < size; j++) {
kernel[i][j] = exp(-((i - center) * (i - center) + (j - center) * (j - center)) / (2.0 * sigma * sigma));
sum += kernel[i][j];
}
}
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
kernel[i][j] /= sum;
}
}
return kernel;
}
```