小编Pau*_*ger的帖子

树图显示在 R 中,但不在 R-Shiny 中

我能够使用data.tree包来生成一个图。这是一个情节的例子:

library(data.tree)

org <- Node$new("Parent")
org$AddChild("Child_1")
org$AddChild("Child_2")

plot(org)
Run Code Online (Sandbox Code Playgroud)

但是,我无法在 R-Shiny 中渲染此图。我已经能够在 Shiny 中渲染大多数其他图。我能做些什么来渲染这个图,为什么它不显示?这是我的闪亮代码:

library(shiny); library(data.tree)

ui <- fluidPage(
    mainPanel(plotOutput("orgplot") )
)

server <- function(input, output){
  rv <- reactiveValues()

  org <- Node$new("Parent")
  org$AddChild("Child_1")
  org$AddChild("Child_2")

  output$orgplot <- renderPlot({ plot(org)})
}

shinyApp(ui = ui, server = server)         
Run Code Online (Sandbox Code Playgroud)

r shiny

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

在 OpenGL 中实例化数百万个对象:提高每秒帧数

我的最终目标是以 60 fps 渲染 100 万个不同大小和颜色的球体。我也希望能够在屏幕上移动相机。

我已经修改了我正在学习的教程的此页面上的代码,以尝试对许多球体进行实例化。然而,我发现在 64 个球体时,我的 fps 低于 60,而在 900 个球体时,我的 fps 是微不足道的 4。我对实例化的理解很幼稚,但我相信我应该每秒获得更多帧数这个。只有 64 个球体应该可以达到 60 fps。我相信,在某种程度上,我导致 CPU 和 GPU 的通信频率高于它们应有的频率。所以我的问题是:如何在不导致 fps 降低(理想情况下为 60 fps)的情况下实例化这么多对象(最好是数百万个)?

我通过(10 / time_elapsed)每 10 帧计算一次来计算 fps ,这time_elapsed是自上次 fps 调用以来经过的时间。我正在使用printf我的代码的第 118 行打印出来。

我一直在通过本教程学习 OpenGL ,因此我在 Visual Studio 2013 中使用了32 位 GLEW32 位 GLFW。我在 64 位操作系统(Windows 7)上有 8 GB 的 RAM 和2.30 GHz CPU

我已经尝试根据上面的教程编写自己的示例。源代码:

(将第 2 …

c++ opengl render geometry-instancing

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

数学函数,未分配的变量?

我正在寻找一种方法,在为方程中的变量赋值之前,将多个数学函数加在一起.
我这样做是因为我需要优化我的代码,并且我希望每次都为变量分配不同的值.我想要做的一个例子:

  1. f(x, y) = x + 2y

  2. g(x, y) = 3x - y

  3. 增加f(x, y) + g(x, y)得到h(x, y),所以f(x, y) + g(x, y) = h(x, y) = 4x + y

  4. 现在我有h(x, y),我需要多个值h(x, y)

x = 4; y = 3, h(x, y) = 19
x = 1, y = 0, h(x, y) = 4
Run Code Online (Sandbox Code Playgroud)

等等

这可能吗?我试图将它们创建为字符串,添加字符串,然后删除引号以评估总和,但这不起作用.我试图以这种方式做我的方法,因为我想优化我的代码.如果我能够在评估它之前创建我的最终函数(h(x, y)在这种情况下就是这样),那将非常有帮助.

编辑:我正在添加(e**(x + y)),所以使用矩阵的线性解决方案不起作用:/

python function unassigned-variable

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

为什么 numpy 的左移位比 python 慢?

numpy我正在尝试对整数(特别是对象)进行位移numpy.uint64,并且我需要它们很快。在下面的实现中,我将对象放入numpy.arrayonly 中,因为这是唯一可以接受位左移的对象。如果有更快的实施,我会接受。

from timeit import timeit
print(timeit("a << 1", "a = int(2**60)"))
print(timeit("a << 1", "import numpy as np; a = np.array([2 ** 60], dtype=np.uint64)"))
print(timeit("np.left_shift(a, 1)", "import numpy as np; a = np.array([2 ** 60], dtype=np.uint64)"))
Run Code Online (Sandbox Code Playgroud)

返回:

0.056681648000000084
1.208092987
1.1685176299999998
Run Code Online (Sandbox Code Playgroud)

为什么 python 比这个操作快得多numpy?有没有办法获得可比较的速度numpy

python numpy

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

快速推送矢量多次的方法

我已经确定了我的c ++代码中的瓶颈,我的目标是加速它.如果条件为真,我将项目从一个向量移动到另一个向量.

在python中,这样做的pythonic方法是使用列表理解:

my_vector = [x for x in data_vector if x > 1]
Run Code Online (Sandbox Code Playgroud)

我已经破解了一种在C++中执行此操作的方法,并且它运行正常.但是,我在一个while循环中调用了数百万次,而且速度很慢.我对内存分配了解不多,但我认为我的问题与使用重新分配内存有关push_back.有没有办法以不同的方式分配我的内存来加速这段代码?(我不知道my_vectorfor-loop完成之前应该有多大).

std::vector<float> data_vector;
// Put a bunch of floats into data_vector
std::vector<float> my_vector;

while (some_condition_is_true) {
    my_vector.clear();
    for (i = 0; i < data_vector.size(); i++) {
        if (data_vector[i] > 1) {
            my_vector.push_back(data_vector[i]);
        }
    }
    // Use my_vector to render graphics on the GPU, but do not change the elements of my_vector 
    // Change the elements of data_vector, but not the …
Run Code Online (Sandbox Code Playgroud)

c++ vector

0
推荐指数
1
解决办法
1989
查看次数