看了一些文章 自己写写试试:
- #include <iostream>
- #include <math.h>
- using namespace std;
- #define PI 3.1415926
- #define n 7
- //#define center_value 4
- #define sigma 0.84089642
- void makegaussian()
- {
- int center_x = n/2,center_y = n/2;
- double result[n][n];
- double distance;
- double temp;
- double h_sum = 0;
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- distance = (center_x - i) * (center_x - i)+ (center_y - j) * (center_y - j);
- temp = exp( (0-distance)/(2*sigma*sigma) )/2*PI*sigma*sigma;
- h_sum += temp;
- result[i][j] = temp;
- }
- }
- cout<<h_sum<<endl;
- //归一化
- for(int i=0;i<n;i++)
- {
- for(int j=0; j<n; j++)
- {
- result[i][j]/=h_sum;
- }
- cout<<endl;
- }
- for(int i=0;i<n;i++)
- {
- for(int j=0; j<n; j++)
- {
- printf("%0.8f ",result[i][j]);
- }
- cout<<endl;
- }
- }
- int main()
- {
- makegaussian();
- system("pause");
- }
sigma对结果有很大影响,这也符合高斯分布的特点