【问题标题】:Is it possible to replicate MATLAB circshift approach in Armadillo?是否可以在犰狳中复制 MATLAB circshift 方法?
【发布时间】: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()

【问题讨论】:

    标签: c++ matlab matrix armadillo conways-game-of-life


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      相关资源
      最近更新 更多