小编Fra*_*ter的帖子

抛出异常时是否可以自动进入调试器?

如果在最初抛出函数之外捕获异常,则会失去对本地堆栈的访问权限.因此,无法检查可能导致异常的变量值.

有没有办法在import pdb; pdb.set_trace()每次抛出异常来检查本地堆栈时自动启动进入调试器()?

python exception

12
推荐指数
4
解决办法
7940
查看次数

C(gcc)是否有分析器来分别编码代码行?

我来自Matlab背景,所以我习惯了一个分析器,它可以描述每一行而不仅仅是每个函数都像gprofcallgrind.有没有C类似功能的探查器?

谢谢!

截图matlab profiler

c profiler profiling

11
推荐指数
2
解决办法
5045
查看次数

如何在Linux下使用Cuda编译一个非常简单的Makefile

我想在Linux下编译一个非常基本的hello世界级Cuda程序.我有三个文件:

  • 内核:helloWorld.cu
  • 主要方法:helloWorld.cpp
  • common header:helloWorld.h

你能给我写一个简单的Makefile来用nvcc和g ++编译吗?

谢谢,
Gabor

cuda gpgpu makefile compilation

10
推荐指数
2
解决办法
2万
查看次数

OpenCL本地内存是否有限制?

今天我__local向我的内核添加了四个变量以转储中间结果.但是只需将四个以上的变量添加到内核的签名中并添加相应的内核参数,就会将内核的所有输出都呈现为"0".没有cl函数返回错误代码.

我进一步尝试只添加两个较小的变量之一.如果我只添加其中一个,它可以工作,但如果我添加它们,它就会崩溃.

那么OpenCL的这种行为是否意味着我分配给了大量__local内存?我怎么知道,我可以__local使用多少内存?

gpgpu opencl gpu-shared-memory

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

如何在MATLAB中使用在其中绘制的线创建图像矩阵?

我想绘制一条从一个明确定义的点到另一个定义点的线,然后将其转换为图像矩阵,在其上使用高斯滤波器进行平滑.为此,我使用函数linegetframe绘制一条线并捕获图像中的图形窗口,但getframe速度非常慢且不太可靠.我注意到它在计算机锁定时没有捕获任何内容,并且out of memory在170次执行后我收到错误.

我的问题是:

  • getframe我可以使用替代品吗?
  • 有没有办法创建图像矩阵并直接在其中绘制线条?

这是一个最小的代码示例:

figure1=line([30 35] ,[200 60]);
F= getframe;
hsize=40; sigma=20;
h = fspecial('gaussian',hsize,sigma); 
filteredImg = imfilter(double(F.cdata), h,256);
imshow(uint8(filteredImg));
Run Code Online (Sandbox Code Playgroud)

[更新]

高性能Mark的想法linspace看起来非常有前景,但我如何访问用linspace?计算的矩阵坐标?我尝试了以下代码,但它不起作用,因为我认为它应该.我认为这是一个非常简单和基本的MATLAB的东西,但我无法绕过它:

matrix=zeros(200,60);
diagonal=round([linspace(30,200,numSteps); linspace(35,60,numSteps)]);
matrix(diagonal(1,:), diagonal(2,:))=1;
imshow(matrix);
Run Code Online (Sandbox Code Playgroud)

matlab plot image-processing matrix line

9
推荐指数
2
解决办法
2万
查看次数

如何在ctypes中返回指向结构的指针?

我尝试传递一个结构的指针,该结构从函数'bar'返回给函数'foo_write'作为返回值.但是我得到'foo = POINTER(temp_foo)'行的错误消息'TypeError:必须是ctypes类型'.在ctypes在线帮助中,我发现'ctypes.POINTER'仅适用于ctypes类型.你知道另一种方式吗?你会推荐什么?

C:

typedef struct FOO_{
    int i;
    float *b1;
    float (*w1)[];
}FOO;

foo *bar(int foo_parameter) {...
void foo_write(FOO *foo)
Run Code Online (Sandbox Code Playgroud)

Python与ctypes:

class foo(Structure):
    _fields_=[("i",c_int),
              ("b1",POINTER(c_int)),
              ("w1",POINTER(c_float))]

temp_foo=foo(0,None,None)
foo = POINTER(temp_foo)
foo=myclib.bar(foo_parameter)
myclib.foo_write(foo)
Run Code Online (Sandbox Code Playgroud)

c python ctypes pointers structure

9
推荐指数
2
解决办法
2万
查看次数

如何使用带有ctypes的NumPy数组?

我仍在使用ctypes在我的c代码的python接口上编写.今天我用python版本替换了我的文件读取功能,这是由其他人使用NumPy编写的.使用byref(p_data)调用'old'c版本,而p_data = PFloat()(见下文).main函数采用p_data.

旧文件阅读:

p_data=POINTER(c_float)
foo.read(filename,byref(p_data))
result=foo.pymain(p_data)
Run Code Online (Sandbox Code Playgroud)

另一方面,python文件读取函数返回NumPy数组.我现在的问题是:

如何将NumPy数组转换为POINTER(c_float)?

我用谷歌搜索,但只发现相反的方式:C数组通过ctypes访问为NumPy数组和我不理解的东西:C类型外部函数接口(numpy.ctypeslib)

[update] 更正了示例代码中的错误

python ctypes numpy

9
推荐指数
2
解决办法
2万
查看次数

使用savemat保存和加载Python dict会导致错误

这是我得到的错误的最小例子.如果我正确理解文档,这应该是有效的,但似乎我没有.

a={}
a['test1']=1
a['test2']=2
a['test3']=3
import scipy.io as io
io.savemat('temp',{'a':a})
b = io.loadmat('temp')
b['a'].keys()

Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'keys'
Run Code Online (Sandbox Code Playgroud)

python scipy mat-file

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

(int(*)[])var1代表什么?

我找到了这个示例代码,我试图google什么(int (*)[])var1可以代表,但我没有得到有用的结果.

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int *var1 = malloc(100);
    return i(10,10,(int (*)[])var1);
} 
Run Code Online (Sandbox Code Playgroud)

通常我在C99中使用VLA,所以我习惯于:

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int var1[10][10];
    return i(10,10,var1);
} 
Run Code Online (Sandbox Code Playgroud)

谢谢!

c c99 variable-length multidimensional-array

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

如果使用生成器表达式,为什么Numpy.all()和any()会给出错误的结果?

和其他人的代码一起工作,我偶然发现了这个问题.那么numpy行为的解释是什么?

In [1]: import numpy as np

In [2]: foo = [False, False]

In [3]: print np.any(x == True for x in foo)
True  # <- bad numpy!

In [4]: print np.all(x == True for x in foo)
True  # <- bad numpy!

In [5]: print np.all(foo)
False  # <- correct result
Run Code Online (Sandbox Code Playgroud)

ps我从这里得到了列表理解代码:检查列表是否只包含项目x

python numpy

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