假设我有一个2×2的matrix和一个把2个vector作为它的一个参数的函数。 我想将这个函数应用到matrix的每一行,并得到一个n向量。 如何在R中做到这一点? 例如,我想计算三点的2D标准正态分布的密度: bivariate.density(x=c(0,0),mu=c(0,0), sigma=c(1,1), rho=0){ exp(-1/(2*(1-rho^2))*(x[1]^2/sigma[1]^2+x[2]^2/sigma[2]^2-2*rho*x[1]*x[2]/(sigma[1]*sigma[2]))) * 1/(2*pi*sigma[1]*sigma[2]*sqrt(1-rho^2)) } out=rbind(c(1,2),c(3,4),c(5,6)); 如何将函数应用到每一行? 如何通过指定的方式将除了点之外的其他参数的值传递给函数? 谢谢!
假设我使用std::vector来表示值的matrixfoo : int rows = 5; int cols = 10; auto foo = vector<vector<double>>(rows, vector<double>(cols)); 是否有一个简单的方法来获取包含foo的第一个“列”的大小rows的vector<int> : {foo[0][0], foo[0][1], foo[0][2], foo[0][3], foo[0][4] } 换句话说,我可以“转置”foo,以便下列三件事情是真实的: foo_transpose.size() == cols foo_transpose[0].size() == rows foo_transpose[0] == {foo[0][0], foo[0][1], foo[0][2], foo[0][3], foo[0][4] } 澄清笔记 对于代表“matrix”的替代方法,有几个好的build议。 当我使用术语“matrix”时,我只是指每个第二级vector的大小相同。 我不是说我会用这个数据结构来进行线性代数types的操作。 实际上,我需要一个vectorvector或一个数据结构,从中可以“拉出”一维vector,因为我有一些function可以对vector进行操作,例如: double sum(vector<double> const & v); 我打电话给: sum(foo[0]); 只是在特殊情况下,我想到了一个需要做的事情: sum({foo[0][0], foo[0][1], foo[0][2], foo[0][3], […]
我怎样才能find没有循环数组中的最大元素的索引? 例如,如果我有: a = [1 2 999 3]; 我想定义一个函数indexMax以便indexMax(a)将返回3 。 同样用于定义indexMin 。
我试图find给定matrix的零空间(Ax = 0的解空间)。 我find了两个例子,但我似乎无法得到任何工作。 而且,我不明白他们在做什么,所以我不能debugging。 我希望有人能够通过这个来引导我。 文档页面( numpy.linalg.svd和numpy.compress )对我来说是不透明的。 我学会了通过创buildmatrixC = [A|0]来做到这一点,find缩小的行梯forms并逐行求解variables。 我似乎无法仿效这些例子中的做法。 感谢您的帮助! 这里是我的示例matrix,它与维基百科示例相同: A = matrix([ [2,3,5], [-4,2,3] ]) 方法( 在这里和这里 find ): import scipy from scipy import linalg, matrixr def null(A, eps=1e-15): u, s, vh = scipy.linalg.svd(A) null_mask = (s <= eps) null_space = scipy.compress(null_mask, vh, axis=0) return scipy.transpose(null_space) 当我尝试它时,我得到一个空matrix: Python 2.6.6 […]
如何在Matlab中select一个子matrix(不是任何模式)? 例如,对于10乘10的matrix,如何select由第1行第2行,第9行与第4行,第6列交点组成的子matrix? 感谢您的任何有用的答案!
我正在优化一个函数,我想摆脱缓慢的循环。 我正在寻找一种更快的方法来将matrix的每一行乘以一个向量。 有任何想法吗? 编辑: 我不是在寻找一个“古典”的乘法。 例如。 我有matrix,有23列25行和长度为23的向量。结果我想要matrix25x23,每行乘以向量。
考虑一组在N-M尺寸的网格上排列的点。 我正在试图build立邻接matrix,使得相邻的点相连。 例如,在一个带有graphics的3×3网格中: 1-2-3 | | | 4-5-6 | | | 7-8-9 我们应该有相应的邻接matrix: +—+——————————————————+ | | 1 2 3 4 5 6 7 8 9 | +—+——————————————————+ | 1 | 0 1 0 1 0 0 0 0 0 | | 2 | 1 0 1 0 1 0 0 0 0 | | 3 […]
我有一个matrix[500×500]。 我有另一个matrix[2×100],其中包含可能在第一个matrix内的坐标对。 我希望能够将第一个matrix的所有值更改为零,而无需循环。 mtx = magic(500); co_ords = [30,50,70; 30,50,70]; mtx(co_ords) = 0;
我有2个旋转matrix(让我们叫他们A和B)在哪里: A = 1 0 0 0 0 -1 0 1 0 和 B = -1 0 0 0 0 -1 0 -1 0 这基本上只是一个旋转的地方,相机旋转后面看自己。 显然,我不能直接插入matrix中的值,因为它看起来很奇怪。 我已经尝试将matrix转换为欧拉angular,产生2组X,Y,Zangular,并基于X,Y,Zangular的每个分量之间的最小距离来尝试确定使用哪个angular度。 这肯定会导致我想要的旋转types,但我想不出一个体面的方式来确定哪个angular度插入之间,因为有时导致错误最less的angular度集导致围绕错误的轴/轴的旋转。 我也试过四元数,但基本上给了我相同的结果。 任何人都可以指向正确的方向吗?
我在几个地方(在文档和这个博客文章中阅读: http : //blogs.mathworks.com/loren/2007/05/16/purpose-of-inv/ )看到,在Matlab中使用inv不是build议,因为它是缓慢和不准确的。 我试图找出这个不准确的原因。 到目前为止,Google并没有给出有意思的结果,所以我认为这里有人可以指导我。 谢谢 !