小编Raf*_*ael的帖子

如何使用 Python、pybind11 和 Mingw-w64 构建 setup.py 以编译 C++ 扩展?

我目前正在尝试编写一个“setup.py”脚本,当用户安装 python 包时,它会自动编译我与“pybind11”绑定的 C++ 扩展。在 Windows 中,使用“VS19 MSVC”编译器实现它没有任何问题。但是,如果用户安装了“MinGW-w64”,我会尝试实现它。

这些是包文件:

**main.cpp**

    #include <pybind11/pybind11.h>
    
    int add(int i, int j) {
        返回 i + j;
    }
    
    命名空间 py = pybind11;
    
    PYBIND11_MODULE(pybind11_example, m) {
    
        m.def("添加", &add);
    }
**main.cpp**

    #include <pybind11/pybind11.h>
    
    int add(int i, int j) {
        return i + j;
    }
    
    namespace py = pybind11;
    
    PYBIND11_MODULE(pybind11_example, m) {
    
        m.def("add", &add);
    }

将两个文件放在同一文件夹中并从命令提示符运行:

**setup.py**

    from setuptools import setup, Extension
    import pybind11
    
    ext_modules = [
        Extension(
            'pybind11_example',
            sources = ['main.cpp'],
            include_dirs=[pybind11.get_include()],
            language='c++'
        ),
    ]
    
    setup(
        name='pybind11_example', …
Run Code Online (Sandbox Code Playgroud)

c++ python distutils mingw-w64 pybind11

8
推荐指数
1
解决办法
1296
查看次数

如何使用 Mayavi 绘制 3D 复杂场的等值面以避免颜色插值伪影?

以示例库中的原子轨道示例为基础,我尝试使用等值面来可视化 3D 任意复杂场,就像循环 HSV 颜色图说明场的相位一样。但是,在相场取值接近pi和的点上存在问题,-pi在下图中,它对应于红色:

快照

在这些点中,pi和之间存在明显的不连续性-pi,并且 mayavi 似乎在这些值之间进行了插值,这导致了上图中出现的“嘈杂色线”。

我的问题:有没有办法解决这个问题,例如,通过禁用颜色插值?

重现情节的代码:

import numpy as np
from mayavi import mlab

L = 1.0
N = 150
xx, yy, zz = np.mgrid[-L:L:N*1j, -L:L:N*1j, -L:L:N*1j]

 = 0.0
? = 0.30
V = np.exp((-(xx-)**2 -(yy)**2  -(zz)**2 ) / (2*?**2)) 
density = V/np.amax(np.abs(V))
phi = np.arctan2(yy,xx)
density = density  *np.exp(6*phi*1j)


figure = mlab.figure('Phase Plot',bgcolor=(0, 0, 0), size=(700, 700))
field = mlab.pipeline.scalar_field(np.abs(density),vmin= 0.0 ,vmax= 1.0)
colour_data = …
Run Code Online (Sandbox Code Playgroud)

python complex-numbers mayavi density-plot isosurface

6
推荐指数
0
解决办法
156
查看次数

如何在 Gnuplot 中使用抗锯齿功能制作 gif?

例如,我需要在此代码中添加什么来激活抗锯齿?

set terminal gif animate delay 5 size 400, 250
set output "example.gif"

a = 0

do for [i=1:100] {
a = a + 0.1
plot sin(x + a)
}
Run Code Online (Sandbox Code Playgroud)

例子.gif

我需要更改 gnuplot 文件夹的某些文件吗?我正在使用 gnuplot 的 5.2 Windows 版本。

animation gnuplot gif animated-gif antialiasing

4
推荐指数
1
解决办法
1237
查看次数

来自scypy python模块的odeint()如何工作?

我是一名有兴趣以数字方式解决ODE的物理学生.我通常使用Runge-Kutta方法在C中编写自己的求解器.

我最近学习了Python,并使用SciPy的odeint函数来解决ODE.但我担心函数算法是如何工作的,因为它不采用步长参数.那么,我怎样才能了解它是如何工作的?我怎么知道他们的结果的精确度是多少?

我查阅了这个文档,但它没有提供太多信息,我也不太了解他们描述的可选参数.

python scipy numerical-methods differential-equations runge-kutta

3
推荐指数
1
解决办法
1189
查看次数

将在函数中传递引用作为参数以更改参数变量的值。

我在阅读“通过游戏编程开始 C++,第四版”时,发现了一个关于在函数中将引用作为参数传递的部分,内容如下:

“仅当您想要更改参数变量的值时才传递引用。但是,您应该尽可能避免更改参数变量。”

基本上它说我应该避免做这样的事情:

void swap(int& x, int& y)
{
    int temp = x;
    x = y;
    y = temp;
}
Run Code Online (Sandbox Code Playgroud)

但是,为什么我应该避免这样做呢?

我发现创建函数来更改变量非常有用,因为这些函数使我的代码井井有条,避免我在 main() 函数中编写每个变量更改,并且它们还避免我重复编写相同的代码。

如果我不应该这样做,还有什么选择?

c++ reference function parameter-passing pass-by-reference

2
推荐指数
1
解决办法
182
查看次数