我想为图形创建一个邻接矩阵.由于我读过matrix[x][y]因为不检查范围而使用表单数组是不安全的,所以我决定使用stl的vector模板类.我需要存储在矩阵中的是布尔值.所以我的问题是,如果使用std::vector<std::vector<bool>* >*产生过多的开销或者有一种更简单的矩阵方式以及如何正确初始化它.
编辑:非常感谢您的快速解答.我刚才意识到,那当然我不需要任何指针.矩阵的大小将在开始时初始化,并且在程序结束之前不会更改.这是一个学校项目,所以如果我写"好"代码会很好,虽然技术上性能不是太重要.使用STL很好.使用像boost这样的东西可能不受欢迎.
我正在为.NET/C#寻找一个好的(经过良好测试,功能齐全,界面友好的)矩阵库.我在这里的主要要求只是它应该是免费的(我不特别在意它是否是这种情况下的开源)并且最好支持稀疏矩阵运算.强制性要求是所有基本操作(例如乘法,换位,反演)以及寻找特征值和特征向量.用于发现特征值的数值而非/以及分析方法的实现,特别是用于稀疏矩阵的Lanczos算法,将是非常优选的,因为我将要处理的矩阵非常大(长度为10,000向上),因为正方形,也相当稀疏.这么说,我可能会在那里要求一点,所以对合理完整的矩阵库的任何建议都会很棒.
现在我知道Python有一两个有用的库用于这样的任务(即NumPy/SciPy),但遗憾的是,该领域似乎缺乏.NET.
稍微搜索了以下.NET的库,我可以使用它:
但是,由于我没有使用任何这些库或其他任何经验(并且没有足够的时间在任何情况下正确地检查每个库),我非常感谢这里有人可以讨论他们关于各种库的建议,他们的优点/缺点,特别是关于我的用途的适用性,以及他们的一般经验.
求助于MatLab总是一个选择,但不是首选,因为如果我可以直接将矩阵数学与我的程序集成,那将更加方便.
我开始测试Haskell的线性代数.有没有人为此目的提供最佳套餐的建议?使用Haskell进行基本矩阵操作的任何其他好资源?
haskell wiki 为此列出了几个资源.我目前专注于hmatrix和bindings-gsl,两者看起来都很有希望.
我有一个x由y矩阵,其中每行和每列是按升序排列如下面给出的.
1 5 7 9
4 6 10 15
8 11 12 19
14 16 18 21
Run Code Online (Sandbox Code Playgroud)
如何搜索此矩阵中的数字O(x+y)?
我被问到这个问题接受采访,但无法弄明白.很想知道它是否可以完成.
问题
nxn矩阵的每一行由1和0组成,因此在任何行中,所有1都在任何0之前.在O(n)中查找包含大多数1的行.
例
1 1 1 1 1 0 <- Contains maximum number of 1s, return index 1
1 1 1 0 0 0
1 0 0 0 0 0
1 1 1 1 0 0
1 1 1 1 0 0
1 1 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我在算法书中发现了这个问题.我能做的最好的是O(n logn)时间.如何在O(n)中执行此操作?
我想知道如何使用矩阵在旋转后获取矩形内的坐标的新位置.我想做的是:
我无法弄清楚的部分是2和4.任何想法?
我想检查numpy数组/矩阵的列中的所有值是否相同.我试图用reduce的的ufunc equal,但它似乎并没有在所有情况下的工作:
In [55]: a = np.array([[1,1,0],[1,-1,0],[1,0,0],[1,1,0]])
In [56]: a
Out[56]:
array([[ 1, 1, 0],
[ 1, -1, 0],
[ 1, 0, 0],
[ 1, 1, 0]])
In [57]: np.equal.reduce(a)
Out[57]: array([ True, False, True], dtype=bool)
In [58]: a = np.array([[1,1,0],[1,0,0],[1,0,0],[1,1,0]])
In [59]: a
Out[59]:
array([[1, 1, 0],
[1, 0, 0],
[1, 0, 0],
[1, 1, 0]])
In [60]: np.equal.reduce(a)
Out[60]: array([ True, True, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
为什么第二种情况下的中间列也要评估True,而它应该是False?
谢谢你的帮助!
当我学习OpenGL时,我常常偶然发现所谓的眼睛空间坐标.
如果我是对的,你通常有三个矩阵.模型矩阵,视图矩阵和投影矩阵.虽然我不完全确定背后的数学是如何工作的,但我确实知道转换坐标到世界空间,视图空间和屏幕空间.
但是眼睛空间在哪里,我需要将哪些矩阵转换为眼睛空间?