tmp update

This commit is contained in:
张壹 2024-10-09 20:22:22 +08:00
parent c2832c3104
commit c95b20255a
3 changed files with 13 additions and 19 deletions

View File

@ -86,7 +86,7 @@ int main(int argc, char const *argv[]) try
a[0] = 0;
b[0] = 1.5;
k.get_gradient_y_at(0, 0, a, b, d);
k.get_gradient_y_at(0, a, b, d);
double t, sum = 0;
for (size_t i = 0; i < y.size(); i++)

View File

@ -236,9 +236,8 @@ void gctl::kde2d::get_distribution(const array<double> &mx,
return;
}
void gctl::kde2d::get_gradient_x_at(size_t mx_id, size_t my_id,
const array<double> &mx, const array<double> &my,
array<double> &dmx, kde_kernel_e k_type)
void gctl::kde2d::get_gradient_x_at(size_t m_id, const array<double> &mx,
const array<double> &my, array<double> &dmx, kde_kernel_e k_type)
{
if (mx.size() != my.size()) throw std::runtime_error("[gctl::kde2d] Invalid evaluating size.");;
int ms = mx.size();
@ -251,16 +250,15 @@ void gctl::kde2d::get_gradient_x_at(size_t mx_id, size_t my_id,
{
for (size_t j = 0; j < xs_; j++)
{
dmx[i*xs_ + j] = ((x_[j] - mx[mx_id])/hx_)*gaussian_kernel((x_[j] - mx[mx_id])/hx_, (y_[i] - my[my_id])/hy_)/(hx_*hx_*hy_*ms);
dmx[i*xs_ + j] = ((x_[j] - mx[m_id])/hx_)*gaussian_kernel((x_[j] - mx[m_id])/hx_, (y_[i] - my[m_id])/hy_)/(hx_*hx_*hy_*ms);
}
}
}
return;
}
void gctl::kde2d::get_gradient_y_at(size_t mx_id, size_t my_id,
const array<double> &mx, const array<double> &my,
array<double> &dmy, kde_kernel_e k_type)
void gctl::kde2d::get_gradient_y_at(size_t m_id, const array<double> &mx,
const array<double> &my, array<double> &dmy, kde_kernel_e k_type)
{
if (mx.size() != my.size()) throw std::runtime_error("[gctl::kde2d] Invalid evaluating size.");;
int ms = mx.size();
@ -273,7 +271,7 @@ void gctl::kde2d::get_gradient_y_at(size_t mx_id, size_t my_id,
{
for (size_t j = 0; j < xs_; j++)
{
dmy[i*xs_ + j] = ((y_[i] - my[my_id])/hy_)*gaussian_kernel((x_[j] - mx[mx_id])/hx_, (y_[i] - my[my_id])/hy_)/(hy_*hy_*hx_*ms);
dmy[i*xs_ + j] = ((y_[i] - my[m_id])/hy_)*gaussian_kernel((x_[j] - mx[m_id])/hx_, (y_[i] - my[m_id])/hy_)/(hy_*hy_*hx_*ms);
}
}
}

View File

@ -143,30 +143,26 @@ namespace gctl
/**
* @brief Get the gradient at object
*
* @param mx_id
* @param my_id
* @param m_id
* @param mx
* @param my
* @param dmx
* @param k_type
*/
void get_gradient_x_at(size_t mx_id, size_t my_id,
const array<double> &mx, const array<double> &my,
array<double> &dmx, kde_kernel_e k_type = KDE_Gaussian);
void get_gradient_x_at(size_t m_id, const array<double> &mx,
const array<double> &my, array<double> &dmx, kde_kernel_e k_type = KDE_Gaussian);
/**
* @brief Get the gradient y at object
*
* @param mx_id
* @param my_id
* @param m_id
* @param mx
* @param my
* @param dmy
* @param k_type
*/
void get_gradient_y_at(size_t mx_id, size_t my_id,
const array<double> &mx, const array<double> &my,
array<double> &dmy, kde_kernel_e k_type = KDE_Gaussian);
void get_gradient_y_at(size_t m_id, const array<double> &mx,
const array<double> &my, array<double> &dmy, kde_kernel_e k_type = KDE_Gaussian);
private:
size_t xs_, ys_;