小编Phi*_*ard的帖子

预先查询插值

我需要执行许多(数千个)查找操作,其中查找中的断点不会更改。一个简单的例子是

% create some dummy data
% In practice
% - the grid will be denser, and not as regular
% - each page of v will be different
% - v will have thousands of pages
[x,y] = ndgrid(-5:0.1:5);
n_surfaces = 10;
v = repmat(sin(x.^2 + y.^2) ./ (x.^2 + y.^2),1,1,n_surfaces);

[xq,yq] = ndgrid(-5:0.2:5);
vq = nan([size(xq),n_surfaces]);
for idx = 1:n_surfaces
   F = griddedInterpolant(x,y,v(:,:,idx));
   vq(:,:,idx) = F(xq,yq);
end
Run Code Online (Sandbox Code Playgroud)

请注意,通过执行以下操作可以略微加速上述代码,

F = griddedInterpolant(x,y,v(:,:,1));
for idx = 1:n_surfaces
   F.Values = v(:,:,idx); …
Run Code Online (Sandbox Code Playgroud)

matlab simulink

5
推荐指数
0
解决办法
85
查看次数

使用PyDict_SetItemString进行引用计数

我想知道当在PyDict(在C扩展名内)的现有字段中设置新值时,内存管理/引用计数如何工作。

例如,假设以以下方式创建并填充了字典:

myPyDict = PyDict_New();
tempPyObj = PyString_FromString("Original Value");
PyDict_SetItemString(myPyDict,"fieldname",tempPyObj);
Py_DECREF(tempPyObj);
Run Code Online (Sandbox Code Playgroud)

从内存和引用计数的角度来看,当后续发生

tempPyObj = PyString_FromString("New Value");
PyDict_SetItemString(myPyDict,"fieldname",tempPyObj);
Py_DECREF(tempPyObj);
Run Code Online (Sandbox Code Playgroud)

原始值的参考计数是否自动减少(并且内存自动释放)?

的文档PyList_SetItem专门提到了列表的处理方式:This function “steals” a reference to item and discards a reference to an item already in the list at the affected position.

但是,既PyDic_SetItem没有PyDict_SetItemString说字典如何处理替换,也没有说。

python python-2.7

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

如何从S函数调用matlab变量?

我正在使用simulink中的S函数.MATLAB工作区中有一些变量可用.我想打电话给他们.

那么在MATLAB中:

a=3;
Run Code Online (Sandbox Code Playgroud)

在S函数中(用C/C++编写):

double a = CallFromMATLABWorkSpace(a);  //Something like this.
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?有类似的东西,mexCallMATLAB但我不清楚在这种情况下我应该如何使用它.

c c++ matlab simulink

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

标签 统计

matlab ×2

simulink ×2

c ×1

c++ ×1

python ×1

python-2.7 ×1