Tag: 线性代数

Pythonmatrix的逆matrix

我如何得到pythonmatrix的逆? 我自己实现了,但它是纯Python,我怀疑有更快的模块来做到这一点。

如何使用CSS滤镜将黑色转换为任何给定的颜色

我的问题是:给定一个目标RGB颜色,什么是只使用CSS滤镜将黑色( #000 )重新着色成该颜色的公式? 对于被接受的答案,它需要提供一个接受目标颜色作为参数的函数(以任何语言),并返回相应的CSS filterstring。 上下文是需要在background-image重新着色SVG。 在这种情况下,它将支持KaTeX中的某些TeXmath特性: https : //github.com/Khan/KaTeX/issues/587 。 例 如果目标颜色是#ffff00 (黄色),则正确的解决scheme是: filter: invert(100%) sepia() saturate(10000%) hue-rotate(0deg) ( 演示 ) 非目标 animation。 非CSSfilter解决scheme。 从黑色以外的颜色开始。 关心黑色以外的颜色。 目前为止的结果 蛮力search固定筛选器列表的参数: https : //stackoverflow.com/a/43959856/181228 缺点:效率低下,只产生一些16,777,216种可能的颜色(676,248, hueRotateStep=1 )。 更快的search解决scheme使用SPSA : https : //stackoverflow.com/a/43960991/181228 赏金颁发 drop-shadow解决scheme: https : //stackoverflow.com/a/43959853/181228 缺点:不能在Edge上工作。 需要非filter CSS更改和小的HTML更改。 你仍然可以通过提交一个非暴力的解决scheme得到一个接受的答案! 资源 如何计算hue-rotate和sepia : https : //stackoverflow.com/a/29521147/181228示例Ruby实现: […]

“克隆”行或列向量

有时将行或列向量“克隆”到matrix是有用的。 通过克隆我的意思是转换行向量如 [1,2,3] 成matrix [[1,2,3] [1,2,3] [1,2,3] ] 或列向量如 [1 2 3 ] 成 [[1,1,1] [2,2,2] [3,3,3] ] 在matlab或八度,这是很容易做到的: x = [1,2,3] a = ones(3,1) * x a = 1 2 3 1 2 3 1 2 3 b = (x') * ones(1,3) b = 1 1 1 2 2 2 3 3 3 我想用numpy重复这个,但是不成功 […]

什么是最广泛使用的C ++vector/matrixmath/线性代数库,以及它们的成本和收益折衷?

似乎很多项目慢慢需要做matrix运算,陷入了先构build一些向量类并慢慢增加function的陷阱,直到被抓住build立一个半自定义的线性代数库,并依赖于它。 我想避免这种情况,而不是build立在一些切线相关的库(例如OpenCV,OpenSceneGraph)上。 那里常用的matrixmath/线性代数库是什么,为什么会决定使用另一个呢? 有什么会因为某种原因被build议不要使用? 我特别在几何/时间上下文*(2,3,4 Dim)*中使用它,但将来可能会使用更高维的数据。 我正在寻找关于API,速度,内存使用,宽度/完整性,狭窄/特定性,可扩展性和/或成熟度/稳定性的差异。 更新 我结束了使用Eigen3,我非常满意。

Google的Android OpenGL教程是不正确的线性代数吗?

在帮助其他用户提出有关“ 响应触摸事件” Android教程的问题之后,我下载了源代码,对于我所看到的内容感到十分困惑。 该教程似乎无法决定是否要使用行向量或列向量,它看起来都混淆了我。 在Androidmatrix页面上,他们声称他们的惯例是列向量/列主要,这是OpenGL的典型。 我是对的,还是有我失踪的东西? 这里是它的相关位: 通过乘以mProjMatrix * mVMatrix创build一个MVPMatrix来开始。 到现在为止还挺好。 // Set the camera position (View matrix) Matrix.setLookAtM(mVMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f); // Calculate the projection and view transformation Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0) 接下来,他们在MVPMatrix的左侧添加一个旋转? 这似乎有点奇怪。 // Create a rotation for the triangle Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, […]

为什么Matlab的inv慢和不准确?

我在几个地方(在文档和这个博客文章中阅读: http : //blogs.mathworks.com/loren/2007/05/16/purpose-of-inv/ )看到,在Matlab中使用inv不是build议,因为它是缓慢和不准确的。 我试图找出这个不准确的原因。 到目前为止,Google并没有给出有意思的结果,所以我认为这里有人可以指导我。 谢谢 !

matrix的适当乘法用于旋转/平移

为了仅仅在xy平面上旋转/平移对象(仅在z轴上旋转和平移),而不仅仅是到全局中心(设备中心),还有其他任意点,我创build了一个algorithm,这是正确的我认为这是正确的), 但是在执行过程中需要花费大量的时间来移除一个不需要的翻译 (algorithm是在8月4日创build的,并且是在同一天实现的,因为代码已经被修改了15次)。 这里是http://www.pixdip.com/opengles/transform.php#ALGO1的实现 产生不需要的翻译的代码行在里面: private static void updateModel(int upDown, float xAngle, float yAngle, float zAngle) { 如下所示: Matrix.multiplyMV(GLES20Renderer._uBodyCentreMatrix, 0, GLES20Renderer._ModelMatrixBody, 0, GLES20Renderer._uBodyCentre, 0); objX = GLES20Renderer._uBodyCentreMatrix[0]; objY = GLES20Renderer._uBodyCentreMatrix[1]; 即使进行了以下更改,沿着+ Y的不期望的翻译仍然存在: objY = _uBodyCentreMatrix[1] – _uBodyCentre[1]; zAngle = 0; ds = 0; 在每次调用onDrawFrame() ,由于Renderer类的这些字段,值-0.545867f被添加到Y坐标: private static final float[] _uBodyCentre = new float[]{-0.019683f, -0.545867f, -0.000409f, […]

链接ATLAS / MKL到已安装的Numpy

TL; DR如何在不重build的情况下将ATLAS / MKL链接到现有的Numpy。 我用Numpy来计算大matrix,我发现它很慢,因为Numpy只使用1个核心来进行计算。 做了很多search之后,我发现我的Numpy没有链接到像ATLAS / MKL这样的优化库。 这是我的numpy的configuration: >>>import numpy as np >>>np.__config__.show() blas_info: libraries = ['blas'] library_dirs = ['/usr/lib'] language = f77 lapack_info: libraries = ['lapack'] library_dirs = ['/usr/lib'] language = f77 atlas_threads_info: NOT AVAILABLE blas_opt_info: libraries = ['blas'] library_dirs = ['/usr/lib'] language = f77 define_macros = [('NO_ATLAS_INFO', 1)] atlas_blas_threads_info: NOT AVAILABLE openblas_info: […]

用OpenMP进行Cholesky分解

我有一个项目,我们可以用Cholesky分解来求解大的(超过3000×3000)正定密集matrix的逆。 该项目是在Java中,我们使用的是使用CERN 马驹BLAS库 。 分析代码表明Cholesky分解是瓶颈。 我决定尝试使用OpenMP并行化Cholesky分解,并将其用作Java中的DLL(使用JNA)。 我从Rosetta Code的 C中的Cholesky分解代码开始。 我注意到,除了对angular元素之外,列中的值是独立的。 所以我决定并行计算串行对angular元素和列的其余值。 我也交换了循环的顺序,以便内部循环遍历行和遍历列的外部循环。 串行版本比RosettaCode稍慢, 但并行版本比我的4核(8 HT)系统上的RosettaCode版本快6倍。 在Java中使用DLL可以将我们的结果提高六倍。 这里是代码: double *cholesky(double *A, int n) { double *L = (double*)calloc(n * n, sizeof(double)); if (L == NULL) exit(EXIT_FAILURE); for (int j = 0; j <n; j++) { double s = 0; for (int k = 0; k < […]

如何实现Matlab的mldivide(又名反斜杠运算符“\”)

我目前正在开发一个小型的面向matrix的math库(我使用Eigen 3进行matrix数据结构和操作),我想实现一些方便的Matlab函数,比如广泛使用的反斜杠运算符(相当于mldivide )来计算线性系统的解(用matrixforms表示)。 关于如何实现这一点,有没有什么好的详细解释? (我已经用经典的SVD分解实现了Moore-Penrose伪逆函数,但是我已经读过A\b并不总是pinv(A)*b ,至lessMatalb并不是这么简单的) 谢谢