是否可以在犰狳中复制 MATLAB circshift 方法?
Posted
技术标签:
【中文标题】是否可以在犰狳中复制 MATLAB circshift 方法?【英文标题】:Is it possible to replicate MATLAB circshift approach in Armadillo? 【发布时间】:2020-07-13 23:30:13 【问题描述】:我为 MATLAB 找到了这段代码,它可以让您使用 circshift 计算 Conway 的生命游戏中的邻居,我认为这与卷积有关(对我的知识不太自豪,仍在学习,希望您能解释一下正在发生)
for t=1:T
neighbors = circshift(X, [1, 0]) + circshift(X, [-1, 0]) + circshift(X, [0, 1]) + circshift(X, [0, -1]) + ...
circshift(X, [1, 1]) + circshift(X, [-1, 1]) + circshift(X, [1, -1]) + circshift(X, [-1, -1]);
X(find(((neighbors > 3) | (neighbors < 2)) & X)) = 0;
X(find((neighbors == 3) & ~X)) = 1;
我正在尝试做的是相同的,但在 C++ Armadillo 中。 是否有可能做到这一点?求问,由于我没有找到circshift函数,就shift()或者conv2()
【问题讨论】:
【参考方案1】:shift()
函数的工作方式与 Matlab 中的 vec
类型类似,但对于 mat
,您必须执行两次(在每个维度上),例如
arma::mat circshift(arma::mat A, int r, int c)
return arma::shift(arma::shift(A,r,0),c,1);
【讨论】:
以上是关于是否可以在犰狳中复制 MATLAB circshift 方法?的主要内容,如果未能解决你的问题,请参考以下文章
在 Ubuntu 14.04 和 matlab 2014Ra 上使用犰狳在 mex 中出现分段错误
如何传递 matlab::data::TypedArray<double> 作为指针在 MATLAB mex 文件中构造犰狳矩阵?