小编Avi*_*urg的帖子

无法在iPad Air 2上锁定方向

我正在处理的iOS应用程序有一个需要以横向方向锁定的视图.到目前为止,这是通过使用shouldAutorotatesupportedInterfaceOrientations方法完成的,但在iPad Air 2运行时iOS9 beta5,这些方法永远不会触发,方向也不会被锁定.

我尝试了以下设备,除Air2之外的所有方法(使用Xcode beta6运行调试):iPhone 6 +,iPad Mini,iPad Air 2,iPad 2,iPad 3

未开火的方法如下:

- (BOOL)shouldAutorotate {
    return YES;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationMaskLandscapeRight;
}
Run Code Online (Sandbox Code Playgroud)

通过显示视图控制器 presentViewController

objective-c orientation ipad ios ios9

15
推荐指数
2
解决办法
2289
查看次数

正弦和余弦的向量化

我在玩Compiler Explorer时遇到异常(我认为)。如果我想让编译器向量化一个sin计算,我会写:

#include <cmath>

#define NN 512
typedef float T;
typedef T __attribute__((aligned(NN))) AT;

inline T s(const T x)
{
  return sinf(x);
}

void func(AT* __restrict x, AT* __restrict y, int length)
{
  if (length & NN-1) __builtin_unreachable();
  for (int i = 0; i < length; i++)
  {
    y[i] = s(x[i]);
  }
}
Run Code Online (Sandbox Code Playgroud)

用gcc 6.2编译-O3 -march=native -ffast-math并得到

#include <cmath>

#define NN 512
typedef float T;
typedef T __attribute__((aligned(NN))) AT;

inline T s(const …
Run Code Online (Sandbox Code Playgroud)

c++ gcc trigonometry x86-64 vectorization

7
推荐指数
0
解决办法
452
查看次数

稀疏矩阵上的块运算 - Eigen Toolbox - C++

Block operations for sparse matrices - Eigen Toolbox - C++ 


#include "Eigen/Dense"
#include "Eigen/Sparse"
#include <iostream>
using namespace std;
using namespace Eigen;

    int main()
    {
    MatrixXd silly(6, 3);
    silly << 0, 1, 2,
            0, 3, 0,
            2, 0, 0,
            3, 2, 1,
            0, 1, 0,
            2, 0, 0;

        SparseMatrix<double> sparse_silly,temp;
        sparse_silly= Eigen::SparseMatrix<double>(6, 3);
        temp = Eigen::SparseMatrix<double>(6, 3);
        sparse_silly = silly.sparseView();

        std::cout << "Whole Matrix" << std::endl;
        std::cout << sparse_silly << std::endl;



         temp.block(0, 0, 2, 2)=sparse_silly.block(0, 0, 2, 2);

        std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++ sparse-matrix eigen

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

Eigen3 矩阵乘法性能

注意:我也在 E​​igen 论坛上发布了此内容

我想用 3x3 矩阵预乘 3xN 矩阵,即变换 3D 点,如 p_dest = T * p_source

初始化矩阵后:

Eigen::Matrix<double, 3, Eigen::Dynamic> points = Eigen::Matrix<double, 3, Eigen::Dynamic>::Random(3, NUMCOLS);
Eigen::Matrix<double, 3, Eigen::Dynamic> dest = Eigen::Matrix<double, 3, Eigen::Dynamic>(3, NUMCOLS);
int NT = 100;
Run Code Online (Sandbox Code Playgroud)

我评估过这两个版本

// eigen direct multiplication
for (int i = 0; i < NT; i++){
  Eigen::Matrix3d T = Eigen::Matrix3d::Random();
  dest.noalias() = T * points;
}
Run Code Online (Sandbox Code Playgroud)

// col multiplication
for (int i = 0; i < NT; i++){
  Eigen::Matrix3d T = Eigen::Matrix3d::Random(); …
Run Code Online (Sandbox Code Playgroud)

c++ performance matrix eigen visual-studio-2013

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

如何正确使用MPI_Scatterv()

MPI_Scatterv在并行程序中使用时遇到问题。这是它的定义方式:

int MPI_Scatterv(const void *sendbuf, const int *sendcounts,
    const int *displs, MPI_Datatype sendtype, void *recvbuf,
    int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)
Run Code Online (Sandbox Code Playgroud)

顺便我的理解,之间的差MPI_ScattervMPI_Scatter是一个事实,即在MPI_Scatterv段不必是相同长度的,它们不必是连续的(在存储器中的间隙被允许)。我不了解的部分是recvbuf,对于每个过程,如果可以是不同大小的数组,那么应该使用什么recvcount。假设我要发送5个sendbuf元素到进程0,发送15个元素到进程1。be的值应该recvcount是多少?

c c++ parallel-processing mpi

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

如何将稀疏矩阵乘以具有特征的稠密矩阵?

我正在尝试用 C++ 中的特征值将稀疏矩阵乘以密集矩阵(尺寸当然匹配)。以下似乎不起作用。

这是一个 MWE:

  #include <Eigen/Dense>
  #include <Eigen/Sparse>

  using namespace Eigen;

  int main()
  {
        SparseMatrix<double> s;
        s.resize(3,3);
        MatrixXf d(3,3);

        MatrixXf d2(3,3);

        // gives an error
        s*d

        // doesn't give an error
        d*d2
 }
Run Code Online (Sandbox Code Playgroud)

编辑:这里的页面表明它应该顺利工作,但事实并非如此...... http://eigen.tuxfamily.org/dox/group__TutorialSparse.html

c++ eigen

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

复制列 VectorXd 以在 Eigen、C++ 中构造 MatrixXd

假设我们有一个 10x20 的实矩阵:

Eigen::MatrixXd A(10,20);
A.setRandom();
Run Code Online (Sandbox Code Playgroud)

我们想构造一个 10x10 的矩阵

B = [v v ... v v]

其中v是长度为 的列向量10。对于这个向量,v,每个元素都是 A 的每一行的平方范数,即:

v = ( ||x_1||^2, ||x_2||^2, ..., ||x_10||^2,)^T,

其中x_j表示 A 的第 j 行。

构造矩阵的最有效方法是B什么?

我可以构造v如下:

Eigen::VectorXd v(10);
for (int i=1; i<10; i++)
{
    v(i) = A.row(i).squaredNorm();
}
Run Code Online (Sandbox Code Playgroud)

我认为这一步没有for循环是无法解决的。我怎么能复制这个列 10 次,这样B就如上面所讨论的那样填充了?

c++ replicate eigen

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

在EIGEN中,c ++不能通过它的转置来乘以向量

执行以下代码时,我收到此错误:"INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS"

#include <iostream>
#include <Eigen/Dense> 
using namespace Eigen;
int main()
{
    Vector3d v(1, 2, 3);
    Vector3d vT = v.transpose();
    Matrix3d ans = v*vT;
    std::cout << ans << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

没有编译器抱怨,有没有其他方法可以做到这一点?

c++ transpose eigen

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

分支存在于本地,但不在原点

当我在服务器上输入文件夹并输入git branchcommand时,我看到以下结果:

*develop
something_else
master
Run Code Online (Sandbox Code Playgroud)

但是当我在bitbucket上进入我的存储库时,我发现分支开发并不存在.而是开发分支.sourcetree中的相同内容.

怎么了?

git

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